import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {

	public Main() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	}
} import java.util.Map; Map java.util import java.util.Scanner; Scanner java.util import java.util.TreeMap; TreeMap java.util public class Main {

	public Main() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	}
} Main public Main() {
		// TODO 自動生成されたコンストラクター・スタブ
	} Main {
		// TODO 自動生成されたコンストラクター・スタブ
	} public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	} main {
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	} Scanner sc = new Scanner(System.in); sc new Scanner(System.in) int n n m m left left right; right int index index indexL indexL indexR indexR result; result n = sc.nextInt() n sc.nextInt() sc.nextInt sc m = sc.nextInt() m sc.nextInt() sc.nextInt sc Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> (); mapL new TreeMap<Integer,Integer> () Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> (); mapR new TreeMap<Integer,Integer> () indexL=-1 indexL -1 1 indexR=n+1 indexR n+1 n 1 for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			} index=0; index=0 index 0 index<m index m index++ index++ index {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			} {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			} left = sc.nextInt() left sc.nextInt() sc.nextInt sc right = sc.nextInt() right sc.nextInt() sc.nextInt sc if(left>indexL) indexL=left; left>indexL left indexL indexL=left indexL left if(right<indexR) indexR=right; right<indexR right indexR indexR=right indexR right sc.close() sc.close sc result=indexR-indexL+1 result indexR-indexL+1 indexR-indexL indexR indexL 1 if(indexL>indexR) result=0; indexL>indexR indexL indexR result=0 result 0 System.out.println(result) System.out.println System.out System System.out result String[] args args public class Main {

	public Main() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	}
} public class Main {

	public Main() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	}
} Main
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;

public class Main {

	public Main() {
		// TODO 自動生成されたコンストラクター・スタブ
	}

	public static void main(String[] args){
			Scanner sc = new Scanner(System.in);
			// 整数の入力
			int n,m,left,right;
			int index,indexL,indexR, result;
			n = sc.nextInt();
			m = sc.nextInt();
			Map <Integer,Integer> mapL = new TreeMap<Integer,Integer> ();
			Map <Integer,Integer> mapR = new TreeMap<Integer,Integer> ();
            indexL=-1;
            indexR=n+1;
			for(index=0;index<m;index++) {
				left = sc.nextInt();
				right = sc.nextInt();
				if(left>indexL) indexL=left;
				if(right<indexR) indexR=right;
			}
			sc.close();
			result=indexR-indexL+1;
			if(indexL>indexR) result=0;
			// 出力
			System.out.println(result);

	}
}