1 #include<iostream>
2 using namespace std;
3 int can[1001][1001];
4 long long int tot=1;
5 int main()
6 {
7 string n;
8 int m;
9 cin>>n;
10 cin>>m;
11 for(int i=1;i<=m;i++)
12 {
13 int x,y;
14 cin>>x>>y;
15 can[x][y]=1;
16 can[y][x]=1;
17 }
18 for(int i=0;i<10;i++)
19 {
20 for(int j=0;j<10;j++)
21 {
22 for(int k=0;k<10;k++)
23 {
24 if(j!=i&&i!=k&&j!=k)
25 {
26 if(can[i][j]==1&&can[i][k]==1)//将所有可能的情况计算出来 2->3 3->5 2->5
27 can[k][j]=1;
28 }
29 }
30 }
31 }
32 for(int i=0;i<n.length();i++)
33 {
34 int d=n[i]-48;
35 int now=1;
36 for(int j=0;j<10;j++)
37 {
38 if(can[d][j]==1&&d!=j)
39 {
40 now++;
41 }
42 }
43 tot=tot*now;// 乘法原理
44 }
45 cout<<tot;
46 return 0;
47 }