#include <bits/stdc++.h>
using namespace std;
long long mod = 1000000007;
long long mod2 = 998244353;
long long mod3 = 1000003;
long long mod4 = 998244853;
long long inf = 1LL << 60;
long double pi = 3.14159265358979323846L;
double eps = 1e-12;
int dh[4] = {1, -1, 0, 0};
int dw[4] = {0, 0, 1, -1};
int ddh[8] = {-1, -1, -1, 0, 0, 1, 1, 1};
int ddw[8] = {-1, 0, 1, -1, 1, -1, 0, 1};
long long gcd(long long a, long long b) {
  if (a < b) swap(a, b);
  if (b == 0) return a;
  if (a % b == 0) return b;
  return gcd(b, a % b);
}
long long Pow(long long n, long long k) {
  long long ret = 1;
  long long now = n;
  while (k > 0) {
    if (k & 1) ret *= now;
    now *= now;
    k /= 2;
  }
  return ret;
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  int n, m;
  cin >> n >> m;
  vector<int> v[2 * m + 1];
  for (int i = 0; i < n; i++) {
    int l, r;
    cin >> l >> r;
    if (l == 0 && r == m + 1) continue;
    v[r].push_back(l + m);
  }
  int ans[2 * m + 1];
  ans[0] = 0;
  int t = 0;
  multiset<int> st;
  for (int i = 1; i < 2 * m + 1; i++) {
    ans[i] = ans[i - 1];
    for (int j = 0; j < v[i].size(); j++) {
      st.insert(v[i][j]);
    }
    if (st.size() > 0) {
      st.erase(st.begin());
      ans[i]++;
    }
    while (st.size() > 0 && *st.begin() == i) st.erase(st.begin());
    if (i >= m) t = max(t, ans[i] - ans[i - m]);
  }
  cout << n - t << endl;
}
