#include <bits/stdc++.h>
#define MAXM 16
typedef __int128 LL;
using namespace std;
const int N = 10000001;
int n, k;
int head, y[N];
bool exist[N];
LL que[N];
int a[MAXM], b[MAXM];
bool vis[N];
int dfs(int n){
exist[n] = 1; que[1] = n; head = 1;
for (int tail = 0;tail <= head;)
{
int x = que[++ tail];
int y = x, mod = 1;
while (x > 0){
int tmp = x % 10;x /= 10;
for (int i = 0;i < k;i ++){
if (a[i] == tmp){
int p = y + (b[i] - tmp) * mod;
if (exist[p] == 0){
exist[p] = 1;
que[++ head] = p;
}
}
}
mod *= 10;
}
}
return head;
}
/*int find(int c){
return c & (-c);
}*/
int main(){
memset(y, 0, sizeof(y));
scanf("%d%d",&n, &k);
for (int i = 0;i < k;i ++) {
scanf("%d%d",&a[i] ,&b[i]);
}
printf("%d" ,dfs(n));
}