#include<iostream>#include<cstdio>#include<cstring>usingnamespace std;constint N =1e6+10;int pos =1, trie[N][26], num[N];int n, m;voidisert(string s){int c =0;//c最终会到达该串最后一个字符在trie地图上该到的位置 for(int i =0; i < s.size(); i ++){int j = s[i]-'a';if(trie[c][j]==0)
trie[c][j]= pos ++;
c = trie[c][j];}
num[c]++;//这里将插入的串当做一个整体,因为它是前缀}intfnd(string s){int c =0, ans =0;for(int i =0; i < s.size(); i ++){int j = s[i]-'a';if(!trie[c][j])break;
c = trie[c][j];
ans += num[c];}return ans;}intmain(){
cin >> n >> m;while(n --){
string s;
cin >> s;isert(s);}while(m --){
string s;
cin >> s;
cout <<fnd(s)<< endl;}return0;}