#include <stdio.h>
#include<algorithm>
#include<cstring>
#define maxn 100005
using namespace std;

struct trie{

    int nr;
    trie *son[2];
    trie()
    {
        nr = 0;
        for(int i=0;i<2;i++)
            son[i]= NULL;
    }
};

int n;
char s[maxn];
char morse[26][100];

int sol;
trie *r;

void insert()
{
    trie *node = r;
    int ind;

    for(int i=1;i<=n;i++)
        for(int j=1;j<=morse[s[i]-'a'][0];j++)
    {
        if( morse[s[i]-'a'][j] == '.') ind = 0;
        else ind = 1;

        if( node->son[ind] == NULL ) node->son[ind] = new trie();
        node = node->son[ind];
    }

    node->nr++;
    sol = max(sol,node->nr);
}

void read()
{
    char c;
    for(int i=1;i<=26;i++)
    {
        scanf("%c ",&c);
        scanf("%s\n",morse[c-'a']+1);
        morse[c-'a'][0] = strlen(morse[c-'a']+1);
    }
    int nr;
    scanf("%d\n",&nr);
    for(int i=1;i<=nr;i++)
    {
        scanf("%s\n",s+1);
        n = strlen(s+1);
        insert();
    }
}

int main()
{
    //freopen("date.in","r",stdin);
    r = new trie();
    read();

    if( sol <= 1  ) printf("-1");
    else
    printf("%d",sol);
    return 0;
}