#include<bits/stdc++.h>
using namespace std;
map<string,bool>used; //判重
struct check //变换规则
{
string s1,s2;
}g[10];
int tail;
struct point //队列
{
string str;
int step;
}q[100001];
int main()
{
string a,b;
cin>>a>>b; //原始串-目标串
string _1,_2;
while(cin>>_1>>_2) //规则
++tail,g[tail].s1=_1,g[tail].s2=_2;
int l=1,r=1;
q[1].str=a,q[1].step=0;
used[a]=true;
while(l<=r) //BFS
{
point u=q[l++];
for(int i=1;i<=tail;i++)
{
point v=u;
v.step++;
int it=v.str.find(g[i].s1);
if(it==string::npos)continue;
v.str.replace(it,g[i].s1.size(),g[i].s2);
if(used[v.str])continue;
if(v.step>10)continue;
q[++r]=v;
if(v.str==b)
{
cout<<v.step<<'\n';
return 0;
}
}
}
puts("NO ANSWER!\n");
}
码风丑陋,勿喷谢谢