但是 又 红 又 黑(TLE)
#include<bits/stdc++.h>
using namespace std;
const int MAXN = 2e6 + 7;
int nxt[MAXN][130],node_cnt = 1;
void insert(string str){
int pos = 1;
for(int i = 0;i < str.length();i++){
if(nxt[pos][str[i]] == 0)
nxt[pos][str[i]] = ++node_cnt;
pos = nxt[pos][str[i]];
}
nxt[pos][0] = MAXN + 6;
return;
}
int search(string str){
int pos = 1;
for(int i = 0;i < str.length();i++){
if(nxt[pos][str[i]] == 0) return false;
else pos = nxt[pos][str[i]];
}
int cnt = 0;
for(int i = 0;i <= 128;i++)
if(nxt[pos][i] > 0) cnt++;
return cnt;
}
void init(){
memset(nxt,0,sizeof(nxt));
node_cnt = 1;
int n,q;
cin >> n >> q;
for(int i = 1;i <= n;i++){
string tmp_str;
cin >> tmp_str;
insert(tmp_str);
}
for(int i = 1;i <= q;i++){
string tmp_str;
cin >> tmp_str;
cout << search(tmp_str) << endl;
}
return;
}
int main(){
int t;
cin >> t;
while(t--) init();
return 0;
}