#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int line(int i, int j, int a[][10])
{
int k = 0;
for (int t = 1; t <= 9; t++)
{
if (!a[i][t] && a[j][t])
{
a[i][t] = 1;
line(i, t, a);
k = 1;
}
}
if (k)
return 1;
else
return 0;
}
int Rep(int a[][10])
{
int x, y;
int K=0;
for (x = 0;x <= 9;x++)
{
for (y = 0;y <= 9;y++)
if (a[x][y])
if (line(x, y, a))
K = 1;
}
if (K)
Rep(a);
else
return 0;
}
int main()
{
char num[31];
scanf("%s", num);
int n;
scanf("%d", &n);
int b, c;
int a[10][10] = { 0 };
for (int p = 0; p < strlen(num); p++)
{
a[num[p] - '0'][num[p] - '0'] = 1;
}
while (n--)
{
scanf("%d %d", &b, &c);
a[b][c]++;
}
Rep(a);
int i, j;
int A[30] = { 0 };
for (i = 0; i < strlen(num); i++)
{
for (j = 1; j <= 9; j++)
A[i] += a[num[i] - '0'][j];
}
int B[30] = { 0 };
B[0] = 1;
for (i = 0; i < strlen(num); i++)
{
int carry = 0;
for (j = 0; j < 30; j++)
{
int temp = B[j] * A[i] + carry;
B[j] = temp % 10;
carry = temp / 10;
}
}
int start = 29;
while (start > 0 && B[start] == 0) start--;
for (i = start; i >= 0; i--)
{
printf("%d", B[i]);
}
printf("\n");
return 0;
}