#include <bits/stdc++.h>
using namespace std;
int flag[100010] = {0};
int input() {
  int n, m;
  cin >> n >> m;
  int all = n;
  int p1, p2;
  int n1 = 0, n2 = 0;
  int max2 = 0, min1 = n + 1;
  for (int i = 0; i < m; ++i) {
    cin >> p2 >> p1;
    if (p2 > p1) swap(p2, p1);
    if (!flag[p2]) {
      flag[p2] = -1;
      n--;
      n2++;
      max2 = max(max2, p2);
      if (p2 > min1) return 0;
    } else if (flag[p2] != -1)
      return 0;
    if (!flag[p1]) {
      flag[p1] = 1;
      n--;
      n1++;
      min1 = min(min1, p1);
      if (p1 < max2) return 0;
    } else if (flag[p1] != 1)
      return 0;
  }
  for (int i = 1; i <= all; ++i) {
    if (flag[i]) continue;
    if (i > min1) {
      flag[i] = 1;
      n--;
      n1++;
      if (i < max2) return 0;
    }
    if (i < max2) {
      flag[i] = -1;
      n--;
      n2++;
      if (i > min1) return 0;
    }
  }
  if (!n) return 1;
  if ((!n1) && (n2)) return n;
  if ((!n2) && (n1)) return n;
  if ((!n1) && (!n2)) return n - 1;
  return n + 1;
}
int main() {
  cout << input() << endl;
  return 0;
}
