from collections import deque N, M, A, B = map(int, input().split()) G = [[] for _ in range(N + 3)] for _ in range(M): l, r = map(int, input().split()) r += 1 G[l].append(r) G[r].append(l) for i in range(1, A + 1): G[0].append(i) for i in range(B + 1, N + 2): G[i].append(N + 2) q = deque([0]) INF = 10 ** 9 dist = [INF] * (N + 3) dist[0] = 0 while q: v = q.popleft() dx = dist[v] + 1 for x in G[v]: if dist[x] == INF: q.append(x) dist[x] = dx print(-1 if dist[-1] == INF else dist[-1] - 2)