#include <bits/stdc++.h>
using namespace std;
//unordered_map<string, bool> pd;
queue<string> aa,bb,cc;
int la = 1, ss, lla = 1;
int main() {
string a, b, a1[7], b1[7], cr;
int ca, cb, ca1[7], cb1[7], zs = 0, ls;
cin >> a >> b;
// pd[a] = true;
aa.push(a);
ca = a.length();
cb = b.length();
while (cin >> a1[zs] >> b1[zs]) {
ca1[zs] = a1[zs].length();
cb1[zs] = b1[zs].length();
if (ca1[zs] == 1) {
ca1[zs] = 0;
}
if (cb1[zs] == 1) {
cb1[zs] = 0;
}
zs++;
}
for (ss = 1; ss <= 10; ss++) {
lla = la;
la = 0;
bb=aa;
aa=cc;
while (lla) {
lla--;
for (int i = 0; i < zs; i++) {
ls = bb.front().find(a1[i]);
while (ls != string::npos) {
cr = bb.front();
cr.replace(ls, ca1[i], b1[i]);
// cout<<bb.front()<<" "<<i<<" "<<cr<<endl;
if (cr==b) {
cout << ss;
return 0;
}
// if (!pd[cr]) {
// pd[cr] = true;
aa.push(cr);
la++;
// }
ls = bb.front().find(a1[i], ls + 1);
}
}
bb.pop();
}
}
cout << "NO ANSWER!";
return 0;
}
MLE了,不知道怎么优化。