#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; }