#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e3+10;
int trie[maxn][6], cnt = 2;
char s[maxn];
int slen;
bool exi[maxn];
char swant[maxn];
int swantlen;
int Hash(char x) {
if (x == 'A')return 0;
if (x == 'C')return 1;
if (x == 'G')return 2;
if (x == 'T')return 3;
else return 5;
}
void add(int Point, int Now) {
if (Now == slen) {
exi[Point] = true;
return;
}
if (s[Now] == '*') {
if (!trie[Point][4]) {
trie[Point][4] = Point;
}
add(trie[Point][4], Now + 1);
} else {
if (!trie[Point][Hash(s[Now])]) {
trie[Point][Hash(s[Now])] = cnt;
cnt++;
}
add(trie[Point][Hash(s[Now])], Now + 1);
}
return ;
}
bool Dfs(int Point, int Now) {
if (Point == 0)return false;
if (Now == swantlen) {
if (exi[Point])return true;
return false;
}
if (Dfs(trie[Point][Hash(swant[Now])], Now + 1) || Dfs(trie[Point][5], Now + 1) || Dfs(trie[Point][4], Now + 1))return true;
return false;
}
int n;
int main() {
cin >> s;
slen = strlen(s);
add(1, 0);
cin >> n;
int ans = 0;
for (int i = 1; i <= n; i++) {
cin >> swant;
swantlen = strlen(swant);
if (!Dfs(1, 0))ans++;
}
cout << ans;
}