#include "bits/stdc++.h"
#define MAXN 100009
#define INF 1000000007
#define mp(x,y) make_pair(x,y)
#define all(v) v.begin(),v.end()
#define pb(x) push_back(x)
#define wr cout<<"----------------"<<endl;
#define ppb() pop_back()
#define tr(ii,c) for(typeof((c).begin()) ii=(c).begin();ii!=(c).end();ii++)
#define ff first
#define ss second
#define my_little_dodge 46
using namespace std;

typedef long long ll;
typedef pair<int,int> PII;
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
map<char,ll>pm,sz;
map<ll,int>dp;
ll pw[MAXN];
char s[MAXN];
ll mod(ll x){
	return (x%INF);
}
int main(){
	#ifndef ONLINE_JUDGE
    freopen("file.in", "r", stdin);
	#endif	
	pw[0]=1;
	for(int i=1;i<MAXN;i++)
		pw[i]=mod(pw[i-1]*3LL);
	for(int i=0;i<=25;i++){
		char ch;
		scanf(" %c%s",&ch,s);
		int n=strlen(s);
		ll now=0;
		for(int j=0;j<n;j++){
			if(s[j]=='.')
				now=mod(now*3+1);
			else
				now=mod(now*3+2);
		}
		pm[ch]=now;
		sz[ch]=n;
	}
	int q,mx=0;
	scanf("%d",&q);
	while(q--){
		scanf("%s",s);
		int n=strlen(s);
		ll now=0;
		for(int i=0;i<n;i++)
			now=mod(now*pw[sz[s[i]]]+pm[s[i]]);
		dp[now]++;
		umax(mx,dp[now]);
	}
	printf("%d\n",mx);
	return 0;
}