#include<iostream>
using namespace std;
const int N = 3000100;
int son[N][63], cnt[N], idx;
int getNum(char c)
{
int t = (int)c;
if (t >= 48 && t <= 57) return t - 48;
if (t >= 65 && t <= 90) return t - 65+10;
if (t >= 97 && t <= 122)return t - 97+36;
}
void insert(const string& str)
{
int p = 0;
for (int i = 0; i<str.size(); i++)
{
int t = getNum(str[i]);
if (!son[p][t]) son[p][t] = ++idx;
p = son[p][t];
cnt[p]++;
}
}
int find(const string& str)
{
int p = 0;
for (int i = 0; i < str.size(); i++)
{
int t = getNum(str[i]);
if (!son[p][t]) return 0;
p = son[p][t];
}
return cnt[p];
}
int main()
{
cin.tie(0);
cout.tie(0);
int T;
cin >> T;
int n,q;
string str;
for (int i = 0; i < T; i++)
{
cin >> n >> q;
for (int j = 0; j < n; j++)
{
cin >> str;
insert(str);
}
for (int j = 0; j < q; j++)
{
cin >> str;
cout << find(str) << endl;
}
for (int i = 0; i <= idx; i++)
{
cnt[i] = 0;
for (int j = 0; j <= 62; j++)
{
son[i][j] = 0;
}
}
}
return 0;
}