#include <bits/stdc++.h>
using namespace std;
#define vc vector
typedef long long ll;
const int N = 3e6 + 7;
int Trie[N][62], num[N], pos;
void __init(){//初始化
memset(num, 0, sizeof(num[0])*pos);
memset(Trie, 0, sizeof(Trie[0])*pos);
pos = 0;
}
int Index(char c){//字符映射
if(c >= 'a' && c <= 'z')return c - 'a';
if(c >= 'A' && c <= 'Z')return c - 'A' + 26;
else return c - '0' + 52;//数字
}
void Insert(string s){//插入单词
int p = 0;
for(int i = 0; i < s.size(); i++){
int n = Index(s[i]);
if(!Trie[p][n])Trie[p][n] = pos++;
p = Trie[p][n];
num[p]++;
// cout << "Inserting: " << s[i] << " -> " << p << endl;
}
}
int Find(string s){//查询
int p = 0;
for(int i = 0; i < s.size(); i++){
int n = Index(s[i]);
if(!Trie[p][n])return 0;
p = Trie[p][n];
// cout << "Finding: " << s[i] << " -> " << p << endl;
}
return num[p];
}
int main() {
ios::sync_with_stdio(0);
cin.tie(nullptr);
int T;
cin >> T;
while(T--){
__init();//初始化
int n, q; cin >> n >> q;
for(int i = 1; i <= n; i++){
string s; cin >> s;
Insert(s);
}
for(int i = 1; i <= q; i++){
string s; cin >> s;
cout << Find(s) << "\n";
}
}
}