#include<stdio.h>#include<algorithm>#include<math.h>usingnamespacestd;
#define INF 0X7fffffffstructp {int a, b;
}d[20000000];
int N, T;
boolcmp(p p1, p p2){
if(p1.a!=p2.a)
return p1.a < p2.a;
elsereturn p1.b > p2.b;
}
intmain(){
while (scanf("%d%d",&N,&T)!=EOF) {
int mi = INF, ma = -1;
for (int i = 0; i < N; i++) {
scanf("%d%d", &d[i].a, &d[i].b);
mi = min(mi, d[i].a);
ma = max(ma, d[i].b);
}
if (mi > 1 || ma < T) {
printf("-1\n");
continue;
}
sort(d,d+N,cmp);
int *v = newint[N];
for (int i = 0; i < N; i++) v[i] = 0;
p now;
int count = 0;
now = d[0];
v[0] = 1;
count++;
int bz = 0;
int j = -1;
while (now.b < T) {
int k = -1, M = -1;
for (int i = j + 1; i < N; i++) {
if (!v[i]) {
if (M<d[i].b&&d[i].a <= now.b + 1 && d[i].a>now.a) {
M = d[i].b;
k = i;
}
}
}
if (k == -1) {
bz = 1;
break;
}
now = d[k];
j = k;
v[k] = 1;
count++;
}
if (bz) printf("-1\n");
elseprintf("%d\n", count);
}
return0;
}