import sys N,M,A,B = map(int,input().split()) LR = [list(map(int,input().split())) for _ in range(M)] E = [[] for _ in range(B - A + 2)] N2 = B - A + 1 for i in range(M): l,r = LR[i] a = max(0,min(B-A+1,l-A)) b = max(0,min(B-A+1,r-A+1)) E[a].append((b)) E[b].append((a)) #print(E) q1 = {0} q2 = set() nvstd = [True] * (N2+1) nvstd[0] = False ans = 0 while q1: ans += 1 while q1: frm = next(iter(q1)) q1.remove(frm) for to in E[frm]: if to == N2: print(ans) sys.exit() if nvstd[to]: q2.add(to) nvstd[to] = False q1,q2 = q2,q1 q2 = set() print(-1)