#include<bits/stdc++.h>
using namespace std;
char ans[40];
string s;
int k;
int check[10];
int dis[10][10];
int t[10];
void mul(int tmp)
{
int l=strlen(ans);
int x=0,cnt=0;
if(tmp==10)
{
for(int i=l;i>0;i--)
{
ans[i]=ans[i-1];
}
ans[0]='0';
}
else
{
for(int i=0;i<l;i++)
{
x=(ans[i]-'0')*tmp+cnt;
cnt=x;
if(x>=10)
{
x%=10;
}
ans[i]=x+'0';
cnt=(cnt-x)/10;
}
if(cnt!=0)
{
ans[l]=cnt+'0';
}
}
}
int main()
{
cin>>s>>k;
int a,b;
for(int i=0;i<k;i++)
{
cin>>a>>b;
dis[a][b]=1;
}
int len=s.length();
for(int i=0;i<len;i++)
{
check[s[i]-'0']++;
}
ans[0]='1';
for(int k=1;k<=9;k++)
{
for(int i=0;i<=9;i++)
{
for(int j=1;j<=9;j++)
{
if(dis[i][j]==1||dis[i][k]==1&&dis[k][j]==1)
{
dis[i][j]=1;
}
}
}
}
for(int i=0;i<=9;i++)
{
dis[i][i]=0;
}
for(int i=0;i<=9;i++)
{
int tmp=1;
for(int j=0;j<=9;j++)
{
if(dis[i][j]==1&&check[i]==1)
{
tmp++;
}
}
if(s[0]-'0'==i&&dis[i][0]==1)
{
tmp--;
}
t[i]=tmp;
}
for(int i=0;i<=len;i++)
{
if(t[s[i]-'0']>0)
{
mul(t[s[i]-'0']);
}
}
for(int i=strlen(ans)-1;i>=0;i--)
{
cout<<ans[i];
}
return 0;
}