#嘘解法 def solve(n, k, LR): LR.sort(key = lambda x: x[1]) inf = 2 ** 63 - 1 ans = inf D = [] now = -1 for l, r in LR: if l > now: now = r D.append((l, r)) for i in range(len(D)): if i + k - 1 < len(D): ans = min(ans, D[i + k - 1][1] - D[i][0]) return ans if ans < inf else -1 def solve_gu(n, k, LR): import itertools ans = inf for v in itertools.combinations(LR, k): v = list(v) v.sort(key = lambda x: x[1]) now = -1 f = True for l, r in v: if l < now: f = False now = r if f: ans = min(ans, v[-1][-1] - v[0][0]) return ans if ans < inf else -1 import sys, time, random from collections import deque, Counter, defaultdict input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) mi = lambda: map(int, input().split()) li = lambda: list(mi()) inf = 2 ** 63 - 1 mod = 998244353 n, k = mi() LR = [li() for _ in range(n)] print(solve(n, k, LR))