from collections import deque N,M,A,B = map(int, input().split()) G = [list() for _ in range(N+2)] for i in range(M): l,r = map(int, input().split()) G[max(l,A)].append(min(r+1,B+1)) G[min(r+1,B+1)].append(max(l,A)) dis = [-1]*(N+2) dis[A] = 0 d = deque() d.append(A) while d: v = d.popleft() for nex in G[v]: if dis[nex]==-1: dis[nex] = dis[v]+1 d.append(nex) print(dis[B+1])