#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<string>
#include<queue>
#define MAX_N 200

using namespace std;
string A[20],B[20];
string C,D;
typedef pair<int,string> P;
int N,M;
int bfs(string s)
{
    priority_queue<P,vector<P>,greater<P> > que;
    que.push(P(0,s));
    while(!que.empty()){
        P p=que.top();
        que.pop();
        string v=p.second;
        int n=v.length();
        int d=p.first;
        if(v==D)return d;
        if(n>=M)continue;
        for(int i=0;i<N;i++){
            string t=v;
            int m=t.length();
            int l=A[i].length(),nl=B[i].length();
            for(int j=0;j<m;j++){
                bool flag=true;
                for(int k=0;k<l;k++){
                    if(A[i][k]!=t[j+k]){
                        flag=false;
                        break;
                    }
                }
                if(flag){
                    t.resize(m+nl-l);
                    for(int k=m-1;k>=l+j;k--){
                        t[k+nl-l]=t[k];
                    }
                    for(int k=0;k<nl;k++){
                        t[j+k]=B[i][k];
                    }
                    j=j+nl-1;
                    m+=nl-l;
                }
            }
            if(m>n){
                que.push(P(d+1,t));
            }
        }
    }
    return -1;
}
int main()
{
    while(cin>>N&&N){
        for(int i=0;i<N;i++){
            cin>>A[i]>>B[i];
        }
        cin>>C>>D;
        M=D.length();
        int ans=bfs(C);
        printf("%d\n",ans);
    }
}