#include<stdio.h>
#include<string.h>
char n[20];
int k,l,sum=1;
int x[20],y[20];
int is[10000]={0};
int tonum(){
int num=0;
for(int i=0;i<l;i++){
num=(n[i]-'0')+num*10;
}
return num;
}
void dfs(){
for(int i=0 ; i<l ; i++){
for(int j=0;j<k;j++){
if(n[i]-'0' == x[j]){
n[i]=y[j]+'0';
if(!is[tonum()]){
is[tonum()]=1;
sum++;
dfs();
}
n[i]=x[j]+'0';
}
}
}
}
int main(){
scanf("%s %d\n",n,&k);
l=strlen(n);
is[tonum(n)]=1;
for(int i=0;i<k;i++){
scanf("%d %d",x+i,y+i);
}
dfs();
printf("%d",sum);
return 0;
}
测试点2开始没过
输入:123456789 8
1 9
9 1
2 8
8 2
3 7
7 3
4 6
6 4
输出:256