#include<bits/stdc++.h>
using namespace std;
int n,ans;
char vir[1010],vl,p[1010];
int d[128];
int tr[500010][7],cnt,sum[500010];
void insert(char p[]){
int l=strlen(p+1),k=0;
for(int i=1;i<=l;i++){
int now=d[p[i]];
if(!tr[k][now]) tr[k][now]=++cnt;
k=tr[k][now];
}
sum[k]++;
}
bitset<1010>t[500010];
void dfs(int st,int k){
if(t[k][st]) return;
t[k][st]=1;
if(st>vl){
ans+=sum[k];
return;
}
if(vir[st]=='*'){
dfs(st+1,k);
for(int i=1;i<=4;i++){
int now=i;
if(tr[k][now]){
dfs(st+1,tr[k][now]);
dfs(st,tr[k][now]);
}
}
}
else if(vir[st]=='?'){
for(int i=1;i<=4;i++){
int now=i;
if(tr[k][now]) dfs(st+1,tr[k][now]);
}
}
else{
int now=d[vir[st]];
if(tr[k][now]) dfs(st+1,tr[k][now]);
}
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
d['A']=1;d['G']=2;d['T']=3;d['C']=4;d['?']=5;d['*']=6;
cin>>(vir+1);
vl=strlen(vir+1);
cin>>n;
for(int i=1;i<=n;i++){
cin>>(p+1);
insert(p);
}
dfs(1,0);
cout<<n-ans;
return 0;
}