#include <bits/stdc++.h>
using namespace std;
struct data {
  int l, r;
  data(int u, int v) {
    l = u;
    r = v;
  }
  bool operator<(const data &d) const {
    if ((l > d.l && r < d.r) || (l < d.l && r > d.r))
      return r - l > d.r - d.l;
    else
      return l > d.l && r > d.r;
  }
};
set<struct data> A;
vector<struct data> p;
vector<int> x;
map<int, int> mp;
bool compare(data a, data b) {
  if (a.l > b.l && a.r < b.r)
    return a.l < b.l;
  else
    return a.r - a.l < b.r - b.l;
}
int main() {
  int n = 0, i, j, k = 0, l, r;
  scanf("%d", &n);
  while (n--) {
    scanf("%d%d", &l, &r);
    p.push_back(data(l, r));
    x.push_back(l);
    x.push_back(r);
  }
  sort((x).begin(), (x).end());
  for (i = 0; i < x.size(); i++) {
    mp[x[i]] = ++k;
  }
  for (i = 0; i < p.size(); i++) {
    p[i].l = mp[p[i].l];
    p[i].r = mp[p[i].r];
  }
  for (i = 0; i < p.size(); i++) {
    A.insert(p[i]);
  }
  set<struct data>::iterator it = A.begin();
  int sum = 0;
  struct data last(it->l, it->r);
  it++;
  for (; it != A.end(); it++) {
    if (it->l > last.l && it->r < last.r)
      sum++;
    else
      last = *it;
  }
  printf("%d\n", sum);
  return 0;
}
