#include using namespace std; #define ll long long #define FOR(i, j, k, in) for (int i=j; i=k; i-=in) #define REP(i, j) FOR(i, 0, j, 1) #define RREP(i, j) FOR(i, j, 0, 1) #define ALL(a) a.begin(), a.end() #define RALL(a) a.end(), a.begin() #define F first #define S second #define PB push_back #define MP make_pair #define pii pair #define MOD 1000000007 struct Node { vector neighbours; Node* pairNode = nullptr; int enemyVisit = -1; int visitedIn = -1; }; void enemyBFS(Node* start) { vector curr, next; curr.push_back(start); int t = 0; while (curr.size()) { next.clear(); for (auto* n : curr) { if (n->enemyVisit != -1) continue; n->enemyVisit = t; for (auto* m : n->neighbours) { next.push_back(m); } } swap(curr, next); t++; } } void robotBFS(Node* start) { vector curr, next; curr.push_back(start); int t = 0; while (curr.size()) { next.clear(); for (auto* n : curr) { if (n->enemyVisit != -1 && n->enemyVisit <= t || n->visitedIn != -1) continue; n->visitedIn = t; for (auto* m : n->neighbours) { next.push_back(m); } next.push_back(n->pairNode); } swap(curr, next); t++; } } void solve() { int N, M, F, T, S; cin >> N >> M >> F >> T >> S; vector evenTurns(N); vector oddTurns(N); for (int i = 0; i < N; i++) { evenTurns[i].pairNode = &oddTurns[i]; oddTurns[i].pairNode = &evenTurns[i]; } for (int i = 0; i < M; i++) { int a, b; cin >> a >> b; evenTurns[a].neighbours.push_back(&oddTurns[b]); oddTurns[a].neighbours.push_back(&evenTurns[b]); evenTurns[b].neighbours.push_back(&oddTurns[a]); oddTurns[b].neighbours.push_back(&evenTurns[a]); } enemyBFS(&evenTurns[T]); robotBFS(&evenTurns[S]); // for (int i = 0; i < N; i++) { // cout << "even " << i << ": " << evenTurns[i].enemyVisit << ", " << evenTurns[i].visitedIn << endl; // cout << "odd " << i << ": " << oddTurns[i].enemyVisit << ", " << oddTurns[i].visitedIn << endl; // } int dur = -1; if (evenTurns[F].visitedIn >= 0) { dur = evenTurns[F].visitedIn; } if (oddTurns[F].visitedIn >= 0) { dur = dur == -1 ? oddTurns[F].visitedIn : min(dur, oddTurns[F].visitedIn); } if (dur == -1) cout << "death" << endl; else cout << dur << endl; } signed main() { ios_base::sync_with_stdio(false); cin.tie(NULL); ll n=1; // cin >> n; REP(i, n) { solve(); } return 0; }