package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"

	"strconv"
	"strings"
)

func main() {
	sc := bufio.NewScanner(os.Stdin)
	sc.Scan()
	l, _ := strconv.Atoi(strings.Fields(sc.Text())[0])
	m, _ := strconv.Atoi(strings.Fields(sc.Text())[1])
	a := make([][]int, m)
	for i := 0; i < m; i++ {
		sc.Scan()
		left, _ := strconv.Atoi(strings.Fields(sc.Text())[0])
		right, _ := strconv.Atoi(strings.Fields(sc.Text())[1])
		a[i] = []int{left, right}
	}
	sort.Slice(a, func(i, j int) bool {
		return a[i][0] < a[j][0]
	})

	var merged [][]int
	if m > 0 {
		merged = append(merged, a[0])
		for i := 1; i < m; i++ {
			last := merged[len(merged)-1]
			courrent := a[i]
			if courrent[0] <= last[1] {
				last[1] = max(courrent[1], last[1])
				merged[len(merged)-1] = last
			} else {
				merged = append(merged, courrent)
			}
		}
	}
	sum := 0
	for _, e := range merged {
		sum += e[1] - e[0] + 1
	}
	fmt.Print(l + 1 - sum)
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}