using namespace std;
int k;
char n[40];
int kk[20];
int l;
map<string,int> q;
__int128 ans=0;
string s;
void dfs(int cnt){
s[cnt]=n[cnt];
if(cnt == l) {
if(!q[s]){
q[s]=1;
ans++;
}
return;
}
if(kk[n[cnt]-'0']==0) {
dfs(cnt+1);
}
else {
char nn=n[cnt];
n[cnt]=kk[n[cnt]-'0']+'0';
kk[cnt]=0;
dfs(cnt+1);
n[cnt]=nn;
}
}
void write(__int128 xx){
if(xx>9) write(xx/10);
putchar(xx%10+48);
}
int main (){
cin >> n;
l=strlen(n);
scanf("%d",&k);
for(int i=1;i<=k;i++){
int x;
scanf("%d",&x);
scanf("%d",&kk[x]);
}
dfs(0);
//cout << s[0] << endl;
cout << s << endl;
write(ans);
return 0;
}