//snigdh_op
#include<bits/stdc++.h>
#define endl "\n"
using namespace std;
#define fio ios_base::sync_with_stdio(false)
struct tnode{
tnode *ptr[26]={NULL};
bool isWord=false;
};
typedef tnode* TTPTR;
void add(TTPTR &T,string &s,int i)
{
int k=int(s[i])-97;
if(i==s.length()-1)
{
if(T->ptr[k])
T->ptr[k]->isWord=true;
else
{
T->ptr[k]=new tnode;
T->ptr[k]->isWord=true;
}
return ;
}
else
{ i++;
if(!T->ptr[k])
T->ptr[k]=new tnode;
add(T->ptr[k],s,i);
}
}
int fill(TTPTR &T,unordered_map<int,int>&mp)
{
if(!T)return 0;
int ans=0;
if(T->isWord)ans++;
for(int i=0;i<26;i++)ans+=fill(T->ptr[i],mp);
mp[ans]++;
return ans;
}
int main()
{ fio;
cin.tie(NULL);
int n;
cin>>n;
vector<string>inp(n);
for(int i=0;i<n;i++)cin>>inp[i];
int m;
cin>>m;
TTPTR T=new tnode;
for(int i=0;i<n;i++)
{
add(T,inp[i],0);
}
unordered_map<int,int>mp;
int res=fill(T,mp);
for(int i=n-1;i>=1;i--)mp[i]+=mp[i+1];
while(m--)
{
int k;
cin>>k;
cout<<mp[k]-1<<endl;
}
return 0;
}
Ly9zbmlnZGhfb3AKI2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KI2RlZmluZSBlbmRsICJcbiIKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKI2RlZmluZSBmaW8gaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSkKCnN0cnVjdCB0bm9kZXsKCXRub2RlICpwdHJbMjZdPXtOVUxMfTsKCWJvb2wgaXNXb3JkPWZhbHNlOwp9Owp0eXBlZGVmIHRub2RlKiBUVFBUUjsKdm9pZCBhZGQoVFRQVFIgJlQsc3RyaW5nICZzLGludCBpKQp7CglpbnQgaz1pbnQoc1tpXSktOTc7CglpZihpPT1zLmxlbmd0aCgpLTEpCgl7CgkJaWYoVC0+cHRyW2tdKQoJCQlULT5wdHJba10tPmlzV29yZD10cnVlOwoJCQoJCWVsc2UKCQl7CgkJCVQtPnB0cltrXT1uZXcgdG5vZGU7CgkJCVQtPnB0cltrXS0+aXNXb3JkPXRydWU7CgkJfQoJCXJldHVybiA7Cgl9CgllbHNlCgl7CWkrKzsKCQlpZighVC0+cHRyW2tdKQoJCQlULT5wdHJba109bmV3IHRub2RlOwoJCWFkZChULT5wdHJba10scyxpKTsKCX0KfQppbnQgZmlsbChUVFBUUiAmVCx1bm9yZGVyZWRfbWFwPGludCxpbnQ+Jm1wKQp7CQoJaWYoIVQpcmV0dXJuIDA7CglpbnQgYW5zPTA7CglpZihULT5pc1dvcmQpYW5zKys7Cglmb3IoaW50IGk9MDtpPDI2O2krKylhbnMrPWZpbGwoVC0+cHRyW2ldLG1wKTsKCW1wW2Fuc10rKzsKCXJldHVybiBhbnM7Cn0KaW50IG1haW4oKQp7ICAgZmlvOwogICAgY2luLnRpZShOVUxMKTsKICAgIGludCBuOwogICAgY2luPj5uOwogICAgdmVjdG9yPHN0cmluZz5pbnAobik7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKWNpbj4+aW5wW2ldOwogICAgaW50IG07CgljaW4+Pm07CglUVFBUUiBUPW5ldyB0bm9kZTsKCglmb3IoaW50IGk9MDtpPG47aSsrKQoJewkKCQlhZGQoVCxpbnBbaV0sMCk7Cgl9Cgl1bm9yZGVyZWRfbWFwPGludCxpbnQ+bXA7CglpbnQgcmVzPWZpbGwoVCxtcCk7Cglmb3IoaW50IGk9bi0xO2k+PTE7aS0tKW1wW2ldKz1tcFtpKzFdOwoJd2hpbGUobS0tKQoJewoJCWludCBrOwoJCWNpbj4+azsKCQljb3V0PDxtcFtrXS0xPDxlbmRsOwoJfQoJcmV0dXJuIDA7Cn0=