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()) if (l<=A and r<=A) or (l>=B and r>=B):continue if l<=A: l = A if r>=B: r = B G[l].append(r+1) G[r+1].append(l) 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])