#include<bits/stdc++.h>
using namespace std;
char n='0';
long long a[400];
long long x[150],y[150];
inline void read(__int128& a)
{
__int128 s = 0, w = 1;
char ch = getchar();
while (ch < '0' || ch>'9')
{
if (ch == '-')
w = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9')
{
s = s * 10 + ch - '0';
ch = getchar();
}
a = s * w;
}
void write1(__int128 x)
{
if(x<0)
putchar('-'),x=-x;
if(x>9)
write1(x/10);
putchar(x%10+'0');
return;
}
int main()
{
__int128 ans=1,cnt=0,cnt2=0;
long long i=1;
read(cnt);
while(cnt!=0)
{
cnt2+=cnt%10;
cnt2*=10;
cnt-=cnt%10;
cnt/=10;
}
cnt2/=10;
while(cnt2!=0)
{
a[i]=cnt2%10;
i++;
cnt2-=cnt2%10;
cnt2/=10;
}
long long k;
cin>>k;
for(i=1;i<=k;i++)
{
cin>>x[i]>>y[i];
}
long long b[400];
for(i=1;i<=400;i++)
{
b[i]=1;
}
for(i=1;i<=400;i++)
{
bool c[11]={0};c[a[i]]=1;
for(long long j=1;j<=k;j++)
{
for(long long l=0;l<=10;l++)
{
if(c[l]==1&&l==x[j])
{
if(c[y[j]]==0)b[i]++;
c[y[j]]=1;
}
}
}
}
for(i=1;i<=400;i++)
{
ans*=b[i];
}
write1(ans);
return 0;
}