rt,0pts。
#include <bits/stdc++.h>
using namespace std;
const int MAX = 1e6 + 5;
int t , q , n , trie[MAX][26] , inx;
string mod , ask;
bool e[MAX][26];
void insert(string s)
{
int p = 0;
for (int i = 0 ; i < s.length() ; i++)
{
int x = s[i] - 'a';
if (trie[p][x] == 0) trie[p][x] = ++inx;
if (i == s.length() - 1) e[p][s[s.length() - 1] - 'a'] = 1;
p = trie[p][x];
}
return;
}
int find(string s)
{
int p = 0 , ans = 0;
for (int i = 0 ; i < s.length() ; i++)
{
int x = s[i] - 'a';
if (!trie[p][x]) return 0;
if (e[p][x]) ++ans;
p = trie[p][x];
}
return ans;
}
int main()
{
cin >> n >> q;
for (int i = 1 ; i <= n ; i++)
{
cin >> mod;
insert(mod);
}
for (int i = 1 ; i <= q ; i++)
{
cin >> ask;
cout << find(ask) << endl;
}
return 0;
}