#include<bits/stdc++.h>
using namespace std;
int t,n,q,cnt;
struct node{
int cnt;
int word[64];
}a[100001];
int main(){
scanf("%d",&t);
while(t--){
cnt=1;
scanf("%d%d",&n,&q);
for(int i=0;i<n;i++){
string s;
cin>>s;
int nno=0;
for(int j=0;j<64;j++)a[nno].word[j]=0;
for(int j=0;j<s.size();j++){
int ww;
if(s[j]<='9'&&s[j]>='0')ww=s[j]-'0';
else if(s[j]<='z'&&s[j]>='a')ww=s[j]-'a'+10;
else ww=s[j]-'A'+36;
if(a[nno].word[ww])nno=a[nno].word[ww],a[nno].cnt++;
else{
a[nno].word[ww]=nno=cnt;
for(int k=0;k<64;k++)a[nno].word[k]=0;
a[nno].cnt=1;
cnt++;
}
}
}
while(q--){
string s;
cin>>s;
int nno=0,ans=0;
for(int j=0;j<s.size();j++){
int ww;
if(s[j]<='9'&&s[j]>='0')ww=s[j]-'0';
else if(s[j]<='z'&&s[j]>='a')ww=s[j]-'a'+10;
else ww=s[j]-'A'+36;
if(a[nno].word[ww]&&j<s.size()-1)nno=a[nno].word[ww];
else break;
if(j==s.size()-1)ans=a[j].cnt;
}
cout<<ans<<endl;
}
}
}