#include <bits/stdc++.h>

using namespace std;

const int nmax = 100005;

string str[26];
vector < int > key[nmax];
vector < int > key0;
int i , n , p , k , j , answer , act;
string now;
const int mod[] = {66013 , 666013 , 6013 , 1000000007 , 1000000009 , 248547 , 326635788 , 55777 , 13384 , 5587425};

int main()
{

//freopen("test.in" , "r" , stdin);
//freopen("test.out" , "w" , stdout);

for (i = 0 ; i < 26 ; ++i)
{
    cin >> str[i];
    cin >> str[i];
}

cin >> n;

for (i = 0 ; i < n ; ++i)
{
    cin >> now;
    key[i].resize(10);

    for (j = 0 ; j < now.size() ; ++j)
    {
        for (k = 0 ; k < str[now[j] - 'a'].size() ; ++k)
        {
            if (str[now[j] - 'a'][k] == '.')
            {
                for (p = 0 ; p < 3 ; ++p)
                key[i][p] = (1LL * key[i][p] * 2) % mod[p];
            }
            else
            {
                for (p = 0 ; p < 3 ; ++p)
                key[i][p] = (1LL * key[i][p] * 2 + 1) % mod[p];
            }
        }
    }
}

sort(key , key + n);

answer = -1;
for (i = 0 ; i < n ; )
{
    key0 = key[i];
    act = 0;

    while (i < n && key0 == key[i]) act++ , i++;

    if (2 <= act) answer = max(answer , act);
}

cout << answer << '\n';

return 0;
}