#include <iostream>
#include <vector>
#include <map>
#include <cstring>
using namespace std;

#define NMAX 100001

int main() {
    map<char, char*> map1;
    for (int i = 0; i < 26; ++i) {
        char c, *tmp = new char[5];
        cin >> c >> tmp;
        map1.insert(map1.begin(), make_pair(c, tmp));
    }
    vector<char*> vector1;
    vector<int> vector2;
    int nr;
    char *tmp = new char[NMAX];
    cin >> nr;
    for (int i = 0; i < nr; ++i) {
        cin >> tmp;
        char *s = new char[NMAX];
        for (int j = 0; j < strlen(tmp); ++j)
            strcat(s, map1.find(tmp[j])->second);
        bool found = false;
        for (int j = 0; j < vector1.size(); ++j)
            if (strcmp(vector1[j], s) == 0) {
                vector2[j]++;
                found = true;
                break;
            }
        if (found) {
            delete s;
            continue;
        }
        vector1.push_back(s);
        vector2.push_back(1);
    }
    int max = vector2[0];
    for (int i = 1; i < vector2.size(); ++i)
        if (max < vector2[i])
            max = vector2[i];
    if (max < 2) {
        cout << -1;
        return 0;
    }
    cout << max;
    return 0;
}