#include<bits/stdc++.h>
using namespace std;
int ans=0,k,z[1000001],n;
int nn;
string c;
struct edge{
int from,to;
}a[20];
void dfs(int s)
{
if(s>n)
{
cout<<ans<<endl;
exit(0);
}
for(int i=1;i<=k;i++)
{
if(a[i].from==z[s])
{
z[s]=a[i].to;
++ans;
}
dfs(s+1);
z[s]=a[i].from;
}
}
int main()
{
cin>>nn;
c=to_string(nn);
n=c.size();
c=" "+c;
for(int i=1;i<=n;i++)
z[i]=c[i]-'0';
cin>>k;
for(int i=1;i<=k;i++)
cin>>a[i].from>>a[i].to;
dfs(1);
return 0;
}