#include <bits/stdc++.h>
using namespace std;
const int MAXN=1e6+5;
int n, q;
string s;
struct node{
node* child[26];
int fi;
vector<int> pos;
node(){
fi=-1;
for (int i=0; i<26; i++){
child[i]=nullptr;
}
}
};
struct Trie{
Trie(){}
node* createNode()
{
return new node();
}
node* root=createNode();
void addStr(const string &s, int id)
{
node* p=root;
for (int i=0; i<(int)s.length(); i++){
int c=s[i]-'a';
if(p->child[c]==nullptr) p->child[c]=createNode();
p=p->child[c];
p->pos.push_back(id);
}
if(p->fi==-1) p->fi=id;
}
int Find(const string &s)
{
node* p=root;
for (int i=0; i<(int)s.length(); i++){
int c=s[i]-'a';
if(p->child[c]==nullptr) return -1;
p=p->child[c];
}
return p->fi;
}
int calc(const string &s, int id)
{
int res=0;
node* p=root;
for (int i=0; i<(int)s.length(); i++){
int c=s[i]-'a';
if(p->child[c]==nullptr){
break;
}
p=p->child[c];
auto it=upper_bound(p->pos.begin(), p->pos.end(), id);
res+=(it-p->pos.begin());
}
return res;
}
}TRIE;
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for (int i=1; i<=n; i++){
cin >> s;
TRIE.addStr(s, i);
}
cin >> q;
while(q--){
cin >> s;
int id=TRIE.Find(s);
if(id==-1){
id=n;
}
cout << id+TRIE.calc(s, id) << "\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTUFYTj0xZTYrNTsKaW50IG4sIHE7CnN0cmluZyBzOwoKc3RydWN0IG5vZGV7CiAgICBub2RlKiBjaGlsZFsyNl07CiAgICBpbnQgZmk7CiAgICB2ZWN0b3I8aW50PiBwb3M7CiAgICBub2RlKCl7CiAgICAgICAgZmk9LTE7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpPDI2OyBpKyspewogICAgICAgICAgICBjaGlsZFtpXT1udWxscHRyOwogICAgICAgIH0KICAgIH0KfTsKCnN0cnVjdCBUcmllewogICAgVHJpZSgpe30KCiAgICBub2RlKiBjcmVhdGVOb2RlKCkKICAgIHsKICAgICAgICByZXR1cm4gbmV3IG5vZGUoKTsKICAgIH0KCiAgICBub2RlKiByb290PWNyZWF0ZU5vZGUoKTsKCiAgICB2b2lkIGFkZFN0cihjb25zdCBzdHJpbmcgJnMsIGludCBpZCkKICAgIHsKICAgICAgICBub2RlKiBwPXJvb3Q7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpPChpbnQpcy5sZW5ndGgoKTsgaSsrKXsKICAgICAgICAgICAgaW50IGM9c1tpXS0nYSc7CiAgICAgICAgICAgIGlmKHAtPmNoaWxkW2NdPT1udWxscHRyKSBwLT5jaGlsZFtjXT1jcmVhdGVOb2RlKCk7CiAgICAgICAgICAgIHA9cC0+Y2hpbGRbY107CiAgICAgICAgICAgIHAtPnBvcy5wdXNoX2JhY2soaWQpOwogICAgICAgIH0KICAgICAgICBpZihwLT5maT09LTEpIHAtPmZpPWlkOwogICAgfQoKICAgIGludCBGaW5kKGNvbnN0IHN0cmluZyAmcykKICAgIHsKICAgICAgICBub2RlKiBwPXJvb3Q7CiAgICAgICAgZm9yIChpbnQgaT0wOyBpPChpbnQpcy5sZW5ndGgoKTsgaSsrKXsKICAgICAgICAgICAgaW50IGM9c1tpXS0nYSc7CiAgICAgICAgICAgIGlmKHAtPmNoaWxkW2NdPT1udWxscHRyKSByZXR1cm4gLTE7CiAgICAgICAgICAgIHA9cC0+Y2hpbGRbY107CiAgICAgICAgfQogICAgICAgIHJldHVybiBwLT5maTsKICAgIH0KCiAgICBpbnQgY2FsYyhjb25zdCBzdHJpbmcgJnMsIGludCBpZCkKICAgIHsKICAgICAgICBpbnQgcmVzPTA7CiAgICAgICAgbm9kZSogcD1yb290OwogICAgICAgIGZvciAoaW50IGk9MDsgaTwoaW50KXMubGVuZ3RoKCk7IGkrKyl7CiAgICAgICAgICAgIGludCBjPXNbaV0tJ2EnOwogICAgICAgICAgICBpZihwLT5jaGlsZFtjXT09bnVsbHB0cil7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBwPXAtPmNoaWxkW2NdOwogICAgICAgICAgICBhdXRvIGl0PXVwcGVyX2JvdW5kKHAtPnBvcy5iZWdpbigpLCBwLT5wb3MuZW5kKCksIGlkKTsKICAgICAgICAgICAgcmVzKz0oaXQtcC0+cG9zLmJlZ2luKCkpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gcmVzOwogICAgfQp9VFJJRTsKCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7IGNvdXQudGllKDApOwogICAgY2luID4+IG47CiAgICBmb3IgKGludCBpPTE7IGk8PW47IGkrKyl7CiAgICAgICAgY2luID4+IHM7CiAgICAgICAgVFJJRS5hZGRTdHIocywgaSk7CiAgICB9CiAgICBjaW4gPj4gcTsKICAgIHdoaWxlKHEtLSl7CiAgICAgICAgY2luID4+IHM7CiAgICAgICAgaW50IGlkPVRSSUUuRmluZChzKTsKICAgICAgICBpZihpZD09LTEpewogICAgICAgICAgICBpZD1uOwogICAgICAgIH0KICAgICAgICBjb3V0IDw8IGlkK1RSSUUuY2FsYyhzLCBpZCkgPDwgIlxuIjsKICAgIH0KICAgIHJldHVybiAwOwp9