#include <bits/stdc++.h>
const int N = 1e6;
const int M = 1e3;
#define ll long long
const ll MOD = 1e9+7;
const ll base = 31;
using namespace std;
int n, q;
ll p[N+3], f[M+3][M+3];
ll b[N+3];
ll get(int l, int r, int i){
ll res = (f[i][r] - f[i][l - 1]*p[r - l + 1] + 1LL*MOD*MOD)%MOD;
return res;
}
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
cin>>n>>q;
p[0] = 1;
for(int i=1;i<=M;i++){
p[i] = p[i - 1]*base%MOD;
}
for(int i=1;i<=n;i++){
string s;
cin>>s;
int len = s.size();
s = ' ' + s;
for(int j=1;j<=len;j++){
f[i][j] = (f[i][j - 1]*base + s[j] - 'a' + 1)%MOD;
}
b[i] = len;
}
for(int i=1;i<=q;i++){
string s;
cin>>s;
if(s.size() == 1 and s[0] == '*'){
cout<<n<<"\n";
continue;
}
int len = s.size();
s = ' ' + s;
int xx;
for(int j=1;j<=len;j++){
if(s[j] == '*')xx = j;
}
ll Hash1 = 0, Hash2 = 0;
for(int j=1;j<=xx-1;j++){
Hash1 = (Hash1*base + s[j] - 'a' + 1)%MOD;
}
for(int j=xx+1;j<=len;j++){
Hash2 = (Hash2*base + s[j] - 'a' + 1)%MOD;
}
ll ans = 0;
for(int j=1;j<=n;j++){
if(b[j] + 1 < len)continue;
if(xx == 1){
if(Hash2 == get(b[j] - len + xx + 1, b[j], j))ans++;
}
else if(xx == len){
if(Hash1 == get(1, xx - 1, j))ans++;
}
else {
if(Hash1 == get(1, xx - 1, j) and Hash2 == get(b[j] - len + xx + 1, b[j], j))ans++;
}
}
cout<<ans<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CmNvbnN0IGludCBOID0gMWU2Owpjb25zdCBpbnQgTSA9IDFlMzsKI2RlZmluZSBsbCBsb25nIGxvbmcKY29uc3QgbGwgTU9EID0gMWU5Kzc7CmNvbnN0IGxsIGJhc2UgPSAzMTsKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBuLCBxOwoKbGwgcFtOKzNdLCBmW00rM11bTSszXTsKbGwgYltOKzNdOwoKbGwgZ2V0KGludCBsLCBpbnQgciwgaW50IGkpewogICAgbGwgcmVzID0gKGZbaV1bcl0gLSBmW2ldW2wgLSAxXSpwW3IgLSBsICsgMV0gKyAxTEwqTU9EKk1PRCklTU9EOwogICAgcmV0dXJuIHJlczsKfQoKaW50IG1haW4oKXsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY2luPj5uPj5xOwogICAgcFswXSA9IDE7CiAgICBmb3IoaW50IGk9MTtpPD1NO2krKyl7CiAgICAgICAgcFtpXSA9IHBbaSAtIDFdKmJhc2UlTU9EOwogICAgfQogICAgZm9yKGludCBpPTE7aTw9bjtpKyspewogICAgICAgIHN0cmluZyBzOwogICAgICAgIGNpbj4+czsKICAgICAgICBpbnQgbGVuID0gcy5zaXplKCk7CiAgICAgICAgcyA9ICcgJyArIHM7CiAgICAgICAgZm9yKGludCBqPTE7ajw9bGVuO2orKyl7CiAgICAgICAgICAgIGZbaV1bal0gPSAoZltpXVtqIC0gMV0qYmFzZSArIHNbal0gLSAnYScgKyAxKSVNT0Q7CiAgICAgICAgfQogICAgICAgIGJbaV0gPSBsZW47CiAgICB9CiAgICBmb3IoaW50IGk9MTtpPD1xO2krKyl7CiAgICAgICAgc3RyaW5nIHM7CiAgICAgICAgY2luPj5zOwogICAgICAgIGlmKHMuc2l6ZSgpID09IDEgYW5kIHNbMF0gPT0gJyonKXsKICAgICAgICAgICAgY291dDw8bjw8IlxuIjsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGludCBsZW4gPSBzLnNpemUoKTsKICAgICAgICBzID0gJyAnICsgczsKICAgICAgICBpbnQgeHg7CiAgICAgICAgZm9yKGludCBqPTE7ajw9bGVuO2orKyl7CiAgICAgICAgICAgIGlmKHNbal0gPT0gJyonKXh4ID0gajsKICAgICAgICB9CiAgICAgICAgbGwgSGFzaDEgPSAwLCBIYXNoMiA9IDA7CiAgICAgICAgZm9yKGludCBqPTE7ajw9eHgtMTtqKyspewogICAgICAgICAgICBIYXNoMSA9IChIYXNoMSpiYXNlICsgc1tqXSAtICdhJyArIDEpJU1PRDsKICAgICAgICB9CiAgICAgICAgZm9yKGludCBqPXh4KzE7ajw9bGVuO2orKyl7CiAgICAgICAgICAgIEhhc2gyID0gKEhhc2gyKmJhc2UgKyBzW2pdIC0gJ2EnICsgMSklTU9EOwogICAgICAgIH0KICAgICAgICBsbCBhbnMgPSAwOwogICAgICAgIGZvcihpbnQgaj0xO2o8PW47aisrKXsKICAgICAgICAgICAgaWYoYltqXSArIDEgPCBsZW4pY29udGludWU7CiAgICAgICAgICAgIGlmKHh4ID09IDEpewogICAgICAgICAgICAgICAgaWYoSGFzaDIgPT0gZ2V0KGJbal0gLSBsZW4gKyB4eCArIDEsIGJbal0sIGopKWFucysrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgaWYoeHggPT0gbGVuKXsKICAgICAgICAgICAgICAgIGlmKEhhc2gxID09IGdldCgxLCB4eCAtIDEsIGopKWFucysrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaWYoSGFzaDEgPT0gZ2V0KDEsIHh4IC0gMSwgaikgYW5kIEhhc2gyID09IGdldChiW2pdIC0gbGVuICsgeHggKyAxLCBiW2pdLCBqKSlhbnMrKzsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBjb3V0PDxhbnM8PCJcbiI7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=