#include<iostream>
#include<map>
#include<queue>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
using namespace std;
int main(){
string A,B,a[15],b[15];
int n=0;
cin>>A>>B;
while(cin>>a[n++]>>b[n++]);
if(A==B){
printf("0");
return 0;
}
map<string,int>p;
queue<string>q;
q.push(A);
p[A]=1;
while(q.size()){
string u=q.front();
q.pop();
for(int i=0;i<n;i++){
string tmp1=u;
int s=0;
while(tmp1.find(a[i],s)!=string::npos){
string tmp=tmp1;
cout<<tmp<<endl;
tmp.replace(u.find(a[i],s),a[i].size(),b[i]);
cout<<tmp<<endl;
if(p[tmp]) continue;
p[tmp]=p[u]+1;
if(tmp==B){
printf("%d",p[tmp]);
return 0;
}
s=tmp1.find(a[i],s)+1;
}
}
}
printf("NO ANSWER!");
return 0;
}
代码直接卡住,求大佬帮助蒟蒻。