#!/bin/python3.9

from pprint import pprint

def enemy_bfs(edges, sset):
    ret = set()
    for v in sset:
        if v not in edges:
            continue
        for u in edges[v]:
            ret.add(u)
    return ret


def run_bfs(edges, target, enemy, us):
    if us == enemy:
        return 'death'
    if us == target:
        return 0

    q = [us]
    dist = {us: 0}
    pred = {us: None}
    visited = {us}

    enemy_positions = {enemy}

    hladina = None    

    while q:
        v = q.pop(0)
        if hladina != dist[v]: # prechod do dalsi hladiny
            hladina = dist[v]
            enemy_positions = enemy_bfs(edges, enemy_positions)

        if v not in edges:
            continue
        for u in edges[v]:
            if u not in visited and u not in enemy_positions:
                q.append(u)
                dist[u] = dist[v] + 1
                pred[u] = v
                visited.add(u)
                if u == target:
                    return dist[u]
        if v not in enemy_positions:
            q.append(v)
            dist[v] = dist[v] + 1
            pred[v] = v
    return 'death'




n, m, target, enemy, us = map(int, input().split())

edges = {}

for i in range(m):
    a, b = map(int, input().split())
    edges.setdefault(a, []).append(b)
    edges.setdefault(b, []).append(a)

'''
sset = {enemy}

i = 0

while True:
    print(i, sset)
    input()
    sset = enemy_bfs(edges, sset)
'''

print(run_bfs(edges, target, enemy, us))
