#include <cstdio>
#include <cstring>
char a[17],b[17],n[32],k,ans = 1,tot[10];
bool Map[11][10] = {false};
void Ready(){
scanf("%s %d",&n,&k);
return;
}
void Set(){
for(int i = 0; i < k; i++){
scanf("%d%d",&a[i],&b[i]);
}
return;
}
void add(int to,int from){
for(int i = 1; i < 10; i++){
if(Map[from][i]) Map[to][i] = true;
}
return;
}
void Go(){
for(int i = 0; i < k; i++){
Map[a[i]][b[i]] = true;
}
for(int r = 0; r < 9; r++){
for(int i = 0; i < 10; i++){
for(int j = 1; j < 10; j++){
if(Map[i][j]) add(i,j);
}
}
}
return;
}
int CtI(char c){
return c - '0';
}
void Hello(){
for(int i = 0; i < 10; i++){
for(int j = 1; j < 10; j++){
if(Map[i][j]) tot[i]++;
}
}
return;
}
void Good(){
for(int i = 0; i < strlen(n); i++){
ans = ans * tot[CtI(n[i])];
}
return;
}
void Bye(){
printf("%d",ans);
return;
}
int main(){
Ready();
Set();
Go();
Hello();
Good();
Bye();
return 0;
}