#include<bits/stdc++.h>
using namespace std;
string st1[1005],st2[1005];
struct Node{
string st;
int n;
};
string re(string st1,int i,int j,string st2){
string st="";
for(int k=0;k<st1.size();k++){
if(k==i){
st+=st2;
}else if(!(k<i+j && k>=i)){
st+=st1[k];
}
}
return st;
}
int main(){
string a,b;
cin>>a>>b;
int k=0;
while(cin>>st1[k]>>st2[k]){
k++;
}
queue<Node>q;
q.push({a,0});
while(q.size()){
Node p=q.front();
q.pop();
if(p.st==b){
cout<<p.n;
return 0;
}
if(p.n>=10){
break;
}
for(int i=0;i<p.st.size();i++){
for(int j=0;j<k;j++){
if(p.st[i]==st1[j][0]){
bool bo=1;
for(int t=i;t<i+st1[j].size();t++){
if(p.st[t]!=st1[j][t-i]){
bo=0;
break;
}
}
if(bo){
q.push({re(p.st,i,st1[j].size(),st2[j]),p.n+1});
}
}
}
}
}
cout<<"NO ANSWER!";
return 0;
}
最后一个点MLE