#include <stdlib.h>
char raw[40];
int gx[10][10],all[10],out[40];
int main()
{
int n,m,i,j,k,xa,xb,top;
memset(raw,0,sizeof(raw));
memset(gx,0,sizeof(gx));
memset(all,0,sizeof(all));
memset(out,0,sizeof(out));
scanf("%s",&raw[1]);
scanf("%d",&n);
m=strlen(&raw[1]);
for(i=1;i<=n;++i)
{
scanf("%d%d",&xa,&xb);
gx[xa][xb]=1;
}
for(i=0;i<=9;++i)
for(j=0;j<=9;++j)
for(k=0;k<=9;++k)
if(gx[i][j]&&gx[j][k])gx[i][k]=1;
for(i=0;i<=9;++i)
gx[i][i]=1;
for(i=0;i<=9;++i)
for(j=0;j<=9;++j)
all[i]+=gx[i][j];
for(i=1;i<=m;++i)
raw[i]-='0';
out[1]=1;
for(i=1;i<=m;++i)
{
for(j=1;j<=30;++j)
out[j]*=all[raw[i]];
for(j=1;j<=30;++j)
if(out[j]>=10)
{
out[j+1]+=out[j]/10;
out[j]=out[j]%10;
}
}
top=30;
while(!out[top])--top;
for(i=top;i>=1;--i)
printf("%d",out[i]);
return 0;
}