N,M,A,B = map(int,input().split()) G = [[] for _ in range(N+1)] for _ in range(M): l,r = map(int,input().split()) if l <= A: G[0].append(r) else: G[l-1].append(r) G[r].append(l-1) inf = 10 ** 6 dist = [inf] * (N+1) dist[0] = 0 from collections import deque q = deque() q.append(0) while q: now = q.popleft() for v in G[now]: if dist[v] > dist[now] + 1: dist[v] = dist[now] + 1 q.append(v) ans = inf for i in range(B,N+1): if dist[i] < ans: ans = dist[i] print(ans if ans != inf else -1)