n,m,a,b=map(int,input().split()) lr=[list(map(int,input().split())) for _ in range(m)] g=[set() for _ in range(n+2)] for l,r in lr: r+=1 l=max(l,a) l=min(b+1,l) r=max(r,a) r=min(b+1,r) g[l].add(r) g[r].add(l) inf=float('inf') seen=[inf]*(n+2) ans=inf from collections import deque todo=deque([a]) seen[a]=0 while todo: v=todo.popleft() if v>b: ans=min(ans,seen[v]) continue nc=seen[v]+1 for nv in g[v]: if seen[nv]>nc: seen[nv]=nc todo.append(nv) print(-1 if ans==inf else ans)