是不是还要剪一下枝(
#include<bits/stdc++.h>
#define int1 long long
#define owo 10005
using namespace std;
int1 ii,j,k,nn,cc[owo],dd[owo];
string a,b,aa[owo],bb[owo],c;
bool f;
int1 read(){
int1 x = 0,f = 1;
char ch = getchar();
while(!isdigit(ch)){
if(ch == '-'){
f = -1;
}
ch = getchar();
}
while(isdigit(ch)){
x = (x << 1) + (x << 3) + ch - '0';
ch = getchar();
}
return x * f;
}
void print(int1 x){
if(x < 0){
putchar('-');
x = -x;
}
if(x > 9){
print(x / 10);
}
putchar(x % 10 + 48);
return ;
}
string str(){
char ch = getchar();
string w = "";
while(!isalpha(ch)){
ch = getchar();
}
while(isalpha(ch)){
w += ch;
ch = getchar();
}
return w;
}
int1 son(string s,int1 t,int1 sp){
int1 n = s.size(),m = cc[t];
for(j = 0,k = sp; j < m && k < n; j++,k++){
if(s[k] != aa[t][j]){
break;
}
}
if(j == m){
return sp;
}
return -1;
}
string change(string x,int1 y,int1 r){
int1 lenx = x.size(),m = 0,i;
string c = "",tmp = "";
for(i= r + cc[y]; i < lenx; i++){
c += x[i];
m++; //owqwq - qwq lenx=5 cc[y]=3 r=2; m=0;
}
for(i = 0; i < r; i++){
tmp += x[i];
}
tmp += bb[y] + c;
return tmp;
}
void dfs(string x,int1 s){
//cout<< x << " " << s << endl;
if(s > ii){
return;
}
if(x == b){
f = 1;
return;
}
for(int1 i = 1; i <= nn; i++){
int1 n = x.size(),m = cc[i];
for(int1 j = 0; j < n - m + 1; j++){
if(f){
return;
}
int1 p = son(x,i,j);
if(p >= 0){
dfs(change(x,i,p),s + 1);
}
}
}
//cout<< endl;
return;
}
int main(){
cin >> a >> b;
while(++nn < 7 && cin >> aa[nn] >> bb[nn]){
cc[nn] = aa[nn].size(),dd[nn] = bb[nn].size();
}
nn--;
for(ii = 1; ii <= 10; ii++){
dfs(a,0);
if(f){
print(ii);
return 0;
}
}
printf("NO ANSWER!");
return 0;
}