#include<bits/stdc++.h>
using namespace std;
string st1,fi1;
string rule[10][2];
char c;
int s;
struct sn
{
string str;
int n;
};
queue<sn>q;
map<string,int>m;
bool containIt(struct sn s0,string s1)
{
string::size_type idx;
string ss1=s0.str;
idx=ss1.find(s1);
if(idx!=string::npos)return true;
return false;
}
void update(struct sn &s0,string s2,string s1)
{
string ss1=s0.str;
ss1.replace(ss1.find(s2),s2.length(),s1);
s0.str=ss1;
s0.n++;
return ;
}
int main()
{
cin>>st1>>fi1;
// cout<<st1<<" "<<fi1<<endl;
if(st1==fi1)
{
cout<<0;
return 0;
}
// for(int i=1;i<7;i++)
// {
//// c='a';
// s++;
// cin>>rule[i][0]>>rule[i][1];
// if((c=getchar())==' ')break;
// }
while(cin>>rule[s][0]>>rule[s][1])s++;
// s=3;
// for(int i=0;i<3;i++ )cin>>rule[i][0]>>rule[i][1];
// cout<<s<<endl;
sn sn1;
sn1.n=0;
sn1.str=st1;
q.push(sn1);
while(!q.empty())
{
sn ss,ss0;
ss=q.front();
ss0=ss;
if(ss.n==10)
{
cout<<"NO ANSWER!";
return 0;
}
q.pop();
for(int i=0;i<s;i++)
{
ss=ss0;
if(containIt(ss,rule[i][0]))
{
// cout<<ss.str<<endl;
update(ss,rule[i][0],rule[i][1]);
// cout<<ss.str<<endl;
if(ss.str==fi1)
{
cout<<ss.n;
return 0;
}
if(m.count(ss.str))continue;
else m[ss.str]=ss.n;
q.push(ss);
}
}
}
cout<<"NO ANSWER!";
return 0;
}