已AC板
#include<bits/stdc++.h>
using namespace std;
const int N=3e6+10;
int n;
int son[N]['z'-'0'+1],idx,cnt[N];
char str[N];
void insert(char str[]) {
int p=0;
for (int i=0;str[i];i++) {
int u=str[i]-'0';
if (!son[p][u]) son[p][u]=++idx;
p=son[p][u];
cnt[p]++;
}
}
void query(char str[]) {
int p=0;
for (int i=0;str[i];i++) {
int u=str[i]-'0';
if (!son[p][u]) {
printf("0\n");
return;
}
p=son[p][u];
}
printf("%d\n",cnt[p]);
}
int main() {
int t,q;
scanf("%d",&t);
while (t--) {
scanf("%d%d",&n,&q);
for (int i=0;i<n;i++) {
scanf("%s",str);
insert(str);
}
for (int i=0;i<q;i++) {
scanf("%s",str);
query(str);
}
memset(cnt,0,(idx+1)*sizeof(int));
memset(son,0,(idx+1)*('z'-'0'+1)*sizeof(int));
idx=0;
}
return 0;
}