#include <bits/stdc++.h>
using namespace std;
const int maxn = 10;
string A, B, ra[maxn], rb[maxn];
int cnt, len;
struct node{
string s;
int ans;
};
map<string, int> vis;
void bfs(){
queue<node> q;
q.push({A, 0});
vis[A] = 1;
while(q.size()){
node now = q.front();
q.pop();
if(now.ans > 10) {
puts("NO ANSWER!");
return ;
}
if(now.s == B){
cout << now.ans;
return ;
}
for(int i = 1; i <= len; ++i){
string tmp = now.s;
while(1){
int x = tmp.find(ra[i]);
if(x == -1) break;
string t = tmp.replace(x, ra[i].size(), rb[i]);
if(!vis[t]){
q.push({t, now.ans + 1});
vis[t] = 1;
}
tmp[x] = ' ';
}
}
}
puts("NO ANSWER!");
}
int main() {
cin >> A >> B;
string a, b;
while(cin >> a >> b) {ra[++len] = a, rb[len] = b;}//strange……or bug
bfs();
return 0;
}
#5
abaaaba abcdaba
a b
b d
d e
e f
f g
g c
ans:
8
out:
NO ANSWER!
感谢