#include <bits/stdc++.h>
int gcd(int a, int b) { return b == 0 ? a : gcd(b, a % b); }
int lcm(int a, int b) { return ((a * b) / gcd(a, b)); }
using namespace std;
map<long long, long long> div1, div2;
int main() {
  long long i, j, k, l, m, n, d1minn = INFINITY, d2maxx = 0;
  cin >> n >> m;
  for (i = 0; i < m; i++) {
    cin >> j >> k;
    if (j < k) {
      if ((div1[j] == 1) || (div2[k] == 1)) {
        cout << 0;
        return 0;
      }
      div2[j] = 1;
      div1[k] = 1;
      d1minn = min(d1minn, k);
      d2maxx = max(d2maxx, j);
    } else {
      if ((div1[k] == 1) || (div2[j] == 1)) {
        cout << 0;
        return 0;
      }
      div2[k] = 1;
      div1[j] = 1;
      d1minn = min(d1minn, j);
      d2maxx = max(d2maxx, k);
    }
  }
  if (m == 0) {
    cout << n - 1;
    return 0;
  }
  if (d1minn <= d2maxx) {
    cout << 0;
    return 0;
  }
  cout << d1minn - d2maxx;
}
