#include<cstdio>
#include<algorithm>
#include<iostream>
#include<vector>
using namespace std;
int n, m, dp[200007], vis[200007], sum;
int mx[200007];
vector<int> G[200007];
int main() {
scanf("%d%d", &n, &m);
for(int i=1; i<=m; i++) {
int a, b; scanf("%d%d", &a, &b);
G[min(a, b)].push_back(max(a, b));
mx[a] = max(mx[a], b);
mx[b] = max(mx[b], a);
}
for(int i=0; i<=n; i++) {
dp[i] = 998244353*2;
}
dp[1] = 0;
for(int i=1; i<=n; i++) {
mx[i] = max(mx[i], mx[i-1]);
dp[i] = min(dp[i], dp[i-1]+1);
if(!vis[i]) vis[i] = 1, sum++;
for(int j=0; j<G[i].size(); j++) {
int v = G[i][j];
if(!vis[v]) vis[v] = 1, sum++;
}
int to = max(mx[i], i+1);
dp[to] = min(dp[to], dp[i]+to-sum);
}
cout<<dp[n]<<endl;
return 0;
}