#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read()
{
ll number=0,check=1;
char tmp=getchar();
while(tmp<'0'||tmp>'9')
{
if(tmp=='-')
{
check=-1;
}
tmp=getchar();
}
while(tmp>='0'&&tmp<='9')
{
number=(number<<1)+(number<<3)+(tmp&15);
tmp=getchar();
}
return number*check;
}
void write(ll x)
{
if(x<0)
{
x=-x;
putchar('-');
}
if(x>9)
{
write(x/10);
}
putchar(x%10+'0');
}
struct st
{
ll x,y;
bool operator < (const st &u)const
{
return x<u.x;
}
};
const ll N=25010,INF=0x3f3f3f3f3f3f3f3f;
ll n,l,r,ans,res;
bool flag;
st a[N];
int main()
{
n=read();
l=1,r=read();
for(int i=1;i<=n;i++)
{
a[i].x=read(),a[i].y=read();
}
sort(a+1,a+n+1);
for(int i=1,now;i<=n;i++)
{
ans=-INF;
now=i;
while(now<=n&&a[now].x<=l+1)
{
ans=max(ans,a[now].y);
now++;
}
if(ans<l)
{
break;
}
res++;
if(ans>=r)
{
write(res);
putchar('\n');
return 0;
}
l=ans;
i=now-1;
}
write(-1);
putchar('\n');
return 0;
}