#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e5 + 5;
int n, sum;
int dp[maxn];
struct node {
int l, r, c;
bool operator < (const node& b) const {
if(l == b.l) return r < b.r;
return l < b.l;
}
}qj[maxn];
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
sum = n;
for(int i = 1; i <= sum; i++) {
int l, r;
cin >> l >> r;
qj[i].l = l+1;
qj[i].r = n-r;
if(qj[i].l > qj[i].r) {
i--; sum--;
}
}
swap(sum, n);
sort(qj+1, qj+1+n);
for(int i = 1; i <= n; i++) {
if(qj[i].l != qj[i-1].l || qj[i].r != qj[i-1].r)
qj[i].c = 1;
else qj[i].c = qj[i-1].c + 1;
}
int num = n;
for(int i = sum; i >= 1; i--) {
dp[i] = dp[i+1];
while(qj[num].r >= i && num) {
dp[i] = max(dp[i], dp[qj[num].r+1] + min(qj[num].c, qj[num].r - qj[num].l+1));
num--;
}
}
cout << sum - dp[1];
return 0;
}