#include <bits/stdc++.h>
using namespace std;
unordered_map<char,int>mp;
int t,n,q,cnt[3000005],tot;
short tree[3000005][65];
void _insert(string s)
{
int p=0;
for(int i=0;i<s.size();i++)
{
char c=s[i];
if(!tree[p][mp[c]])tree[p][mp[c]]=++tot;
p=tree[p][mp[c]];
cnt[p]++;
}
return;
}
int _find(string s)
{
int p=0;
for(int i=0;i<s.size();i++)
{
char c=s[i];
if(!tree[p][mp[c]])return 0;
p=tree[p][mp[c]];
}
return cnt[p];
}
int main()
{
cin>>t;
int num=0;
for(char i='0';i<='9';i++)mp[i]=++num;
for(char i='a';i<='z';i++)mp[i]=++num;
for(char i='A';i<='Z';i++)mp[i]=++num;
for(int i=1;i<=t;i++)
{
memset(tree,0,sizeof(tree));
memset(cnt,0,sizeof(cnt));
tot=0;
cin>>n>>q;
for(int j=1;j<=n;j++)
{
string s;
cin>>s;
_insert(s);
}
for(int j=1;j<=q;j++)
{
string s;
cin>>s;
cout<<_find(s)<<endl;
}
}
return 0;
}
全部TLE和RE求调