#include <bits/stdc++.h>
using namespace std;
int main() {
int a, b, c, f, m, n, p, r, s; vector<vector<int>> g; vector<int> d, h, v; queue<int> q;
ios_base::sync_with_stdio(0), cin.tie(0), cin >> n >> m, p = n+1;
for (g.resize(p), d.resize(p,-1), h.resize(p,0), v.resize(p,-1); m--; )
cin >> a >> b, g[a].push_back(b), g[b].push_back(a);
for (cin >> s >> f >> r, d[r] = 0, q.push(r); not q.empty(); q.pop())
for (auto u: g[a = q.front()])
if (d[u] == -1)
d[u] = d[a]+1, q.push(u);
for (h[s] = d[s], v[s] = 0, q.push(s); not q.empty(); q.pop())
for (auto u: g[a = q.front()])
if (b = v[a]+1, c = min(h[a],d[u]), v[u] == -1 or (v[u] >= b and c > h[u]))
if (v[u] = b, h[u] = c, u != f)
q.push(u);
cout << h[f]; }
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpIHsKCWludCBhLCBiLCBjLCBmLCBtLCBuLCBwLCByLCBzOyB2ZWN0b3I8dmVjdG9yPGludD4+IGc7IHZlY3RvcjxpbnQ+IGQsIGgsIHY7IHF1ZXVlPGludD4gcTsKCWlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCksIGNpbi50aWUoMCksIGNpbiA+PiBuID4+IG0sIHAgPSBuKzE7Cglmb3IgKGcucmVzaXplKHApLCBkLnJlc2l6ZShwLC0xKSwgaC5yZXNpemUocCwwKSwgdi5yZXNpemUocCwtMSk7IG0tLTsgKQoJCWNpbiA+PiBhID4+IGIsIGdbYV0ucHVzaF9iYWNrKGIpLCBnW2JdLnB1c2hfYmFjayhhKTsKCWZvciAoY2luID4+IHMgPj4gZiA+PiByLCBkW3JdID0gMCwgcS5wdXNoKHIpOyBub3QgcS5lbXB0eSgpOyBxLnBvcCgpKQoJCWZvciAoYXV0byB1OiBnW2EgPSBxLmZyb250KCldKQoJCQlpZiAoZFt1XSA9PSAtMSkKCQkJCWRbdV0gPSBkW2FdKzEsIHEucHVzaCh1KTsKCWZvciAoaFtzXSA9IGRbc10sIHZbc10gPSAwLCBxLnB1c2gocyk7IG5vdCBxLmVtcHR5KCk7IHEucG9wKCkpCgkJZm9yIChhdXRvIHU6IGdbYSA9IHEuZnJvbnQoKV0pCgkJCWlmIChiID0gdlthXSsxLCBjID0gbWluKGhbYV0sZFt1XSksIHZbdV0gPT0gLTEgb3IgKHZbdV0gPj0gYiBhbmQgYyA+IGhbdV0pKSAKCQkJCWlmICh2W3VdID0gYiwgaFt1XSA9IGMsIHUgIT0gZikKCQkJCQlxLnB1c2godSk7IAoJY291dCA8PCBoW2ZdOyB9Cgk=