#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e3+5;
const int oo = 1e9 + 7;
int n, m, k, s, t;
vector<int> adj[maxn];
int d[maxn][maxn][2];
struct que
{
int u, v, t;
};
void solve()
{
cin >> n >> m >> k >> s >> t;
for(int i = 1; i <= m; i++)
{
int u, v;
cin >> u >> v;
adj[u].push_back(v);
}
if(s == t)
{
cout << 0 << "\n";
return;
}
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
d[i][j][0] = d[i][j][1] = oo;
}
}
queue<que> q;
d[s][t][0] = 0;
q.push({s, t, 0});
while(!q.empty())
{
que cur = q.front();
q.pop();
int u = cur.u;
int v = cur.v;
int t = cur.t;
if(t == 0)
{
for(int x : adj[u])
{
if(d[x][v][1] == oo)
{
d[x][v][1] = d[u][v][0];
q.push({x, v, 1});
}
}
}
else
{
for(int y : adj[v])
{
if(d[u][y][0] == oo)
{
d[u][y][0] = d[u][v][1] + 1;
if(u == y)
{
cout << d[u][y][0] << "\n";
return;
}
q.push({u, y, 0});
}
}
}
}
cout << -1 << "\n";
}
int32_t main()
{
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if(fopen("main.inp", "r"))
{
freopen("main.inp", "r", stdin);
// freopen("main.out", "w", stdout);
}
int test = 1;
// cin >> test;
while(test--) solve();
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGludCBtYXhuID0gMmUzKzU7CmNvbnN0IGludCBvbyA9IDFlOSArIDc7CgppbnQgbiwgbSwgaywgcywgdDsKdmVjdG9yPGludD4gYWRqW21heG5dOwppbnQgZFttYXhuXVttYXhuXVsyXTsKCnN0cnVjdCBxdWUKewogICAgaW50IHUsIHYsIHQ7Cn07Cgp2b2lkIHNvbHZlKCkKewogICAgY2luID4+IG4gPj4gbSA+PiBrID4+IHMgPj4gdDsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwogICAgICAgIGFkalt1XS5wdXNoX2JhY2sodik7CiAgICB9CgogICAgaWYocyA9PSB0KQogICAgewogICAgICAgIGNvdXQgPDwgMCA8PCAiXG4iOwogICAgICAgIHJldHVybjsKICAgIH0KCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBmb3IoaW50IGogPSAxOyBqIDw9IG47IGorKykKICAgICAgICB7CiAgICAgICAgICAgIGRbaV1bal1bMF0gPSBkW2ldW2pdWzFdID0gb287CiAgICAgICAgfQogICAgfQoKICAgIHF1ZXVlPHF1ZT4gcTsKICAgIGRbc11bdF1bMF0gPSAwOwogICAgcS5wdXNoKHtzLCB0LCAwfSk7CgogICAgd2hpbGUoIXEuZW1wdHkoKSkKICAgIHsKICAgICAgICBxdWUgY3VyID0gcS5mcm9udCgpOwogICAgICAgIHEucG9wKCk7CgogICAgICAgIGludCB1ID0gY3VyLnU7CiAgICAgICAgaW50IHYgPSBjdXIudjsKICAgICAgICBpbnQgdCA9IGN1ci50OwoKICAgICAgICBpZih0ID09IDApCiAgICAgICAgewogICAgICAgICAgICBmb3IoaW50IHggOiBhZGpbdV0pCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGlmKGRbeF1bdl1bMV0gPT0gb28pCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgZFt4XVt2XVsxXSA9IGRbdV1bdl1bMF07CiAgICAgICAgICAgICAgICAgICAgcS5wdXNoKHt4LCB2LCAxfSk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgZm9yKGludCB5IDogYWRqW3ZdKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBpZihkW3VdW3ldWzBdID09IG9vKQogICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgIGRbdV1beV1bMF0gPSBkW3VdW3ZdWzFdICsgMTsKCiAgICAgICAgICAgICAgICAgICAgaWYodSA9PSB5KQogICAgICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgICAgY291dCA8PCBkW3VdW3ldWzBdIDw8ICJcbiI7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CgogICAgICAgICAgICAgICAgICAgIHEucHVzaCh7dSwgeSwgMH0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgLTEgPDwgIlxuIjsKfQoKaW50MzJfdCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsgY2luLnRpZSgwKTsgY291dC50aWUoMCk7CiAgICBpZihmb3BlbigibWFpbi5pbnAiLCAiciIpKQogICAgewogICAgICAgIGZyZW9wZW4oIm1haW4uaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgICAgICBmcmVvcGVuKCJtYWluLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGludCB0ZXN0ID0gMTsKLy8gICAgY2luID4+IHRlc3Q7CiAgICB3aGlsZSh0ZXN0LS0pIHNvbHZlKCk7Cn0K