#include <bits/stdc++.h>
using namespace std;
string n;
char op[16][2];
int k;
map <char, int> sss;
map <char, bool> s;
map <char, char> ss;
bool q[36] = {false};
unsigned long long ans = 0;
void dfs(int p, string sb) {
if (p == int(n.size())) {
ans++;
return;
}
for (int i = 0; i < int(n.size()); i++) {
if (q[i] == false && s[sb[i]] == true) {
char nop = sb[i];
sb[i] = ss[nop];
q[i] = true;
dfs(p + i, sb);
sb[i] = op[sss[nop]][0];
q[i] = false;
}
}
}
int main() {
cin >> n >> k;
for (int i = 0; i < k; i++) {
cin >> op[i][0] >> op[i][1];
s[op[i][0]] = true;
ss[op[i][0]] = op[i][1];
sss[op[i][0]] = i;
}
dfs(0, n);
cout << ans << endl;
return 0;
}