代码:
#include <bits/stdc++.h>
using namespace std;
const int N = 100010, M = 1000010;
int son[N][26];
char str[M];
int cnt[N];
int n, m, idx;
void insert(char str[])
{
int p = 0;
for(int i = 0; str[i]; i ++ )
{
int u = str[i] - 'a';
if(!son[p][u]) son[p][u] = ++ idx;
p = son[p][u];
}
cnt[p] ++ ;
}
int query(char str[])
{
int p = 0, res = 0;
for(int i = 0; str[i]; i ++ )
{
int u = str[i] - 'a';
if(!son[p][u]) return 0;
p = son[p][u];
res += cnt[p];
}
return res;
}
int main()
{
cin >> n >> m;
while(n -- )
{
scanf("%s", str);
insert(str);
}
while(m -- )
{
scanf("%s", str);
printf("%d\n", query(str));
}
return 0;
}