#include<bits/stdc++.h>
using namespace std;
struct itemq
{
string w;
int l;
};
bool adj(string& a, string& b)
{
int n = a.length();
int c = 0;
for (int i = 0; i < n; i++)
{
if (a[i] != b[i])
c++;
if (c > 1)
return false;
}
if(c==1)
return true;
else
return false;
//return c == 1 ? true : false;
}
int ans(string& start, string& end, set<string> &D)
{
if(start==end)
return 0;
queue<itemq> Q;
itemq item = {start, 1};
Q.push(item);
while (!Q.empty())
{
itemq curr = Q.front();
Q.pop();
set<string>::iterator it;
for (it = D.begin(); it != D.end(); it++)
{
string temp = *it;
if (adj(curr.w, temp))
{
item.w = temp;
item.l = curr.l + 1;
Q.push(item);
D.erase(temp);
if (temp == end)
return item.l;
}
}
}
return -1;
}
int main(void)
{
string s;
set<string> D;
cin>>s;
while(s!="END")
{
D.insert(s);
cin>>s;
}
string start;
cin>>start;
string end;
cin>>end;
cout << ans(start, end, D)<<endl;
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4gCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgaXRlbXEgCnsgCiAgICBzdHJpbmcgdzsgCiAgICBpbnQgbDsgCn07CmJvb2wgYWRqKHN0cmluZyYgYSwgc3RyaW5nJiBiKSAKeyAKICAgIAogICAgaW50IG4gPSBhLmxlbmd0aCgpOwogICAgaW50IGMgPSAwOyAKIAogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIAogICAgeyAKICAgICAgICBpZiAoYVtpXSAhPSBiW2ldKSAKICAgICAgICAgICAgYysrOwogICAgICAgIGlmIChjID4gMSkgCiAgICAgICAgICAgIHJldHVybiBmYWxzZTsgCiAgICB9CiAgICBpZihjPT0xKQogICAgICAgIHJldHVybiB0cnVlOwogICAgZWxzZQogICAgICAgIHJldHVybiBmYWxzZTsKICAgIC8vcmV0dXJuIGMgPT0gMSA/IHRydWUgOiBmYWxzZTsgCn0gCmludCBhbnMoc3RyaW5nJiBzdGFydCwgc3RyaW5nJiBlbmQsIHNldDxzdHJpbmc+ICZEKSAKeyAKICAgIGlmKHN0YXJ0PT1lbmQpCiAgICAgICAgcmV0dXJuIDA7CiAgICBxdWV1ZTxpdGVtcT4gUTsgCiAgICBpdGVtcSBpdGVtID0ge3N0YXJ0LCAxfTsKICAgIFEucHVzaChpdGVtKTsgCgogICAgd2hpbGUgKCFRLmVtcHR5KCkpIAogICAgewogICAgICAgIGl0ZW1xIGN1cnIgPSBRLmZyb250KCk7IAogICAgICAgIFEucG9wKCk7CiAgICAgICAgc2V0PHN0cmluZz46Oml0ZXJhdG9yIGl0OwogICAgICAgIGZvciAoaXQgPSBELmJlZ2luKCk7IGl0ICE9IEQuZW5kKCk7IGl0KyspIAogICAgICAgIHsgCiAgICAgICAgICAgIHN0cmluZyB0ZW1wID0gKml0OyAKICAgICAgICAgICAgaWYgKGFkaihjdXJyLncsIHRlbXApKSAKICAgICAgICAgICAgeyAKICAgICAgICAgICAgICAgIGl0ZW0udyA9IHRlbXA7IAogICAgICAgICAgICAgICAgaXRlbS5sID0gY3Vyci5sICsgMTsgCiAgICAgICAgICAgICAgICBRLnB1c2goaXRlbSk7IAogICAgICAgICAgICAgICAgRC5lcmFzZSh0ZW1wKTsgCgogICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gZW5kKSAKICAgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0ubDsgCiAgICAgICAgICAgIH0gCiAgICAgICAgfSAKICAgIH0KICAgIHJldHVybiAtMTsgCn0gCmludCBtYWluKHZvaWQpIAp7IAogICAgc3RyaW5nIHM7CiAgICBzZXQ8c3RyaW5nPiBEOwogICAgY2luPj5zOwogICAgd2hpbGUocyE9IkVORCIpCiAgICB7CiAgICAgICAgRC5pbnNlcnQocyk7CiAgICAgICAgY2luPj5zOwogICAgfQogICAgc3RyaW5nIHN0YXJ0OwogICAgY2luPj5zdGFydDsKICAgIHN0cmluZyBlbmQ7CiAgICBjaW4+PmVuZDsgCiAgICBjb3V0IDw8IGFucyhzdGFydCwgZW5kLCBEKTw8ZW5kbDsgIAogICAgcmV0dXJuIDA7ICAKfQ==