#include<bits/stdc++.h>
using namespace std;
//#define int long long
int read()
{
int x=0,f=1;
char ch=getchar();
while((ch>57||ch<48)&&ch!=45) ch=getchar();
if(ch==45) f=-1,ch=getchar();
while(ch>=48&&ch<=57) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
return x*f;
}
void print2(int x)
{
if(x>9) print2(x/10);
putchar((x%10)^48);
}
void print(int x)
{
if(x<0) putchar(45),x=-x;
print2(x);
}
int trie[4000500][65];
int t(char x)
{
if('a'<=x&&x<='z') return x-'a'+1;
if('A'<=x&&x<='Z') return x-'A'+27;
else return x-'0'+53;
}
signed main()
{
cin.tie(0),cout.tie(0),ios::sync_with_stdio(0);
int T;cin>>T;
while(T--)
{
int n,m;cin>>n>>m;
memset(trie,0,sizeof(trie));
while(n--)
{
string s;
cin>>s;
s=" "+s;
int x=0;
for(int i=1;i<s.size();++i)
{
if(trie[x][t(s[i])]==0) trie[x][t(s[i])]=++trie[0][0];
x=trie[x][t(s[i])];
++trie[x][0];
}
}
while(m--)
{
string s;
cin>>s;
s=" "+s;
int x=0,ok=1;
for(int i=1;i<s.size();++i)
{
if(trie[x][t(s[i])]==0)
{
puts("0");
ok=0;
break;
}
x=trie[x][t(s[i])];
}
if(ok) cout<<trie[x][0]<<endl;
}
}
return 0;
}
RT,谢谢各位巨佬喵。