#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>
#define LMAX 100005

using namespace std;

int i, n, x, ans = 0, curr = 1;
char c[500][LMAX], ch, cit[LMAX];
vector < string > v;

int main()
{
    for (i = 1; i <= 26; ++ i)
    {
        cin >> ch; cin.get();
        cin.getline(c[ch], LMAX - 4);
    }

    cin >> n;
    cin.get();

    for (i = 1; i <= n; ++ i)
    {
        cin.getline(cit, LMAX - 4);
        x = strlen(cit);
        char aux[LMAX];
        memset(aux, '\0', sizeof(aux));

        for (int j = 0; j < x; ++ j)
            strcat(aux, c[cit[j]]);

        v.push_back(aux);
    }

    sort(v.begin(), v.end());

    n = v.size();

    for (i = 1; i < n; ++ i)
        if (v[i] == v[i - 1])
            curr ++;
    else
        ans = max(ans, curr), curr = 1;

    if (ans == 1)
        cout << -1;
    else
        cout << ans;
    return 0;
}