#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
#define fi first
#define se second
#define mp make_pair
#define pb push_back
#define fbo find_by_order
#define ook order_of_key
typedef long long ll;
typedef pair<ll,ll> ii;
typedef vector<int> vi;
typedef long double ld;
typedef tree<int, null_type, less<int>, rb_tree_tag, tree_order_statistics_node_update> pbds;
typedef set<int>::iterator sit;
typedef map<int,int>::iterator mit;
typedef vector<int>::iterator vit;
const int MAXN = 300001;
const int sigma = 26;
int to[MAXN][sigma];
int dp[MAXN];
int sz = 1;
void add_str(string s)
{
int cur = 0;
for(int i = 0; i < s.length(); i++)
{
char c = s[i];
dp[cur] = min(int(s.length()), dp[cur]);
if(!to[cur][c - 'a'])
{
to[cur][c - 'a'] = sz++;
}
cur = to[cur][c - 'a'];
}
dp[cur] = min(int(s.length()), dp[cur]);
}
const int INF = 1000000000;
int calc(string &s)
{
int ans = s.length() + dp[0];
int cur = 0;
for(int i = 0; i < s.length(); i++)
{
char c = s[i];
cur = to[cur][c - 'a'];
if(cur == 0) break;
ans = min(ans, int(s.length()) + dp[cur] - 2*(i+1));
}
return ans;
}
int main()
{
ios_base::sync_with_stdio(0); cin.tie(0);
for(int i = 0; i < MAXN; i++) dp[i] = INF;
int n; cin >> n;
for(int i = 0; i < n; i++)
{
string s; cin >> s;
add_str(s);
}
//cerr<<"DP 0 = "<<dp[0]<<'\n';
int q; cin >> q;
while(q--)
{
string s; cin >> s;
cout << calc(s) << '\n';
}
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNpbmNsdWRlIDxleHQvcGJfZHMvYXNzb2NfY29udGFpbmVyLmhwcD4KI2luY2x1ZGUgPGV4dC9wYl9kcy90cmVlX3BvbGljeS5ocHA+CiAKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKdXNpbmcgbmFtZXNwYWNlIF9fZ251X3BiZHM7CiAKI2RlZmluZSBmaSBmaXJzdAojZGVmaW5lIHNlIHNlY29uZAojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIGZibyBmaW5kX2J5X29yZGVyCiNkZWZpbmUgb29rIG9yZGVyX29mX2tleQogCnR5cGVkZWYgbG9uZyBsb25nIGxsOwp0eXBlZGVmIHBhaXI8bGwsbGw+IGlpOwp0eXBlZGVmIHZlY3RvcjxpbnQ+IHZpOwp0eXBlZGVmIGxvbmcgZG91YmxlIGxkOyAKdHlwZWRlZiB0cmVlPGludCwgbnVsbF90eXBlLCBsZXNzPGludD4sIHJiX3RyZWVfdGFnLCB0cmVlX29yZGVyX3N0YXRpc3RpY3Nfbm9kZV91cGRhdGU+IHBiZHM7CnR5cGVkZWYgc2V0PGludD46Oml0ZXJhdG9yIHNpdDsKdHlwZWRlZiBtYXA8aW50LGludD46Oml0ZXJhdG9yIG1pdDsKdHlwZWRlZiB2ZWN0b3I8aW50Pjo6aXRlcmF0b3Igdml0OwogCmNvbnN0IGludCBNQVhOID0gMzAwMDAxOwpjb25zdCBpbnQgc2lnbWEgPSAyNjsKIAppbnQgdG9bTUFYTl1bc2lnbWFdOwppbnQgZHBbTUFYTl07CmludCBzeiA9IDE7CiAKdm9pZCBhZGRfc3RyKHN0cmluZyBzKQp7CiAgICBpbnQgY3VyID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCBzLmxlbmd0aCgpOyBpKyspCiAgICB7CgkJY2hhciBjID0gc1tpXTsKCQlkcFtjdXJdID0gbWluKGludChzLmxlbmd0aCgpKSwgZHBbY3VyXSk7CiAgICAgICAgaWYoIXRvW2N1cl1bYyAtICdhJ10pCiAgICAgICAgewogICAgICAgICAgICB0b1tjdXJdW2MgLSAnYSddID0gc3orKzsKICAgICAgICB9CiAgICAgICAgY3VyID0gdG9bY3VyXVtjIC0gJ2EnXTsKICAgIH0KICAgIGRwW2N1cl0gPSBtaW4oaW50KHMubGVuZ3RoKCkpLCBkcFtjdXJdKTsKfQogCmNvbnN0IGludCBJTkYgPSAxMDAwMDAwMDAwOwogCmludCBjYWxjKHN0cmluZyAmcykKewoJaW50IGFucyA9IHMubGVuZ3RoKCkgKyBkcFswXTsKCWludCBjdXIgPSAwOwoJZm9yKGludCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7IGkrKykKCXsKCQljaGFyIGMgPSBzW2ldOwoJCWN1ciA9IHRvW2N1cl1bYyAtICdhJ107CgkJaWYoY3VyID09IDApIGJyZWFrOwoJCWFucyA9IG1pbihhbnMsIGludChzLmxlbmd0aCgpKSArIGRwW2N1cl0gLSAyKihpKzEpKTsKCX0KCXJldHVybiBhbnM7Cn0KIAppbnQgbWFpbigpCnsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7IGNpbi50aWUoMCk7Cglmb3IoaW50IGkgPSAwOyBpIDwgTUFYTjsgaSsrKSBkcFtpXSA9IElORjsKCWludCBuOyBjaW4gPj4gbjsKCWZvcihpbnQgaSA9IDA7IGkgPCBuOyBpKyspCgl7CgkJc3RyaW5nIHM7IGNpbiA+PiBzOwoJCWFkZF9zdHIocyk7Cgl9CgkvL2NlcnI8PCJEUCAwID0gIjw8ZHBbMF08PCdcbic7CglpbnQgcTsgY2luID4+IHE7Cgl3aGlsZShxLS0pCgl7CgkJc3RyaW5nIHM7IGNpbiA+PiBzOwoJCWNvdXQgPDwgY2FsYyhzKSA8PCAnXG4nOwoJfQp9CiA=