注释掉的初始化方式是错的!!!
#include<bits/stdc++.h>
using namespace std;
int T;
int n,q;
const int N=3e6+10;
int t[N][70];
int tot;
int word[N];
int num(char x){
if(x>='A'&&x<='Z')return x-'A';
if(x>='a'&&x<='z')return x-'a'+26;
else return x-'0'+52;
}
void insert(string s){
int u=0;
for(int i=0;i<s.size();i++){
int a=num(s[i]);
if(!t[u][a])t[u][a]=++tot;
u=t[u][a];
word[u]++;
}
}
int qry(string s){
int u=0;
for(int i=0;i<s.size();i++){
int a=num(s[i]);
if(t[u][a]==0)return 0;
u=t[u][a];
}
return word[u];
}
void solve(){
// for(int i=0;i<=tot;i++){
// word[i]=0;
// for(int j=1;j<=68;j++){
// t[i][j]=0;
// }
// }
// tot=0;
for(int i=0;i<=tot;i++){
for(int j=0;j<=66;j++){
t[i][j]=0;
}
}
for(int i=0;i<=tot;i++){
word[i]=0;
}
tot=0;
cin>>n>>q;
for(int i=1;i<=n;i++){
string s;
cin>>s;
insert(s);
}
while(q--){
string s;
cin>>s;
cout<<qry(s)<<"\n";
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>T;
while(T--)solve();
return 0;
}