INF = 10**18 from collections import defaultdict N, M = map(int, input().split()) G = defaultdict(list) events = [] def chmax(DP,i,v): if DP[i] < v: DP[i] = v def chmin(DP,i,v): if DP[i] > v: DP[i] = v for i in range(M): a, b = map(int, input().split()) G[a].append(b) events.append(a) events.append(b) events.sort() if N not in events: events.append(N) dp = defaultdict(lambda: INF) dp[1] = 0 # 確定マスのうち一番大きいもの pre = 1 for masu in events: # pre から近道無しで来た場合 option1 = dp[pre] + (masu - pre)*2 #option2 = INF # 近道で masu まで来る経路がある場合 #if masu in dp: # option2 = dp[masu] #dp[masu] = min(option1, option2) chmin(dp, masu, option1) # 近道で このさきのマスへの経路がある場合は蒔いておく for nex in G[masu]: # dp[nex] = min(dp[nex], dp[masu] + (2*nex - 2*masu - 1) chmin(dp, nex, dp[masu] + (2*nex - 2*masu - 1)) pre = masu ans = dp[N] print(ans)