#include <bits/stdc++.h>
using namespace std;
#define int long long
///max segtree
struct segTree{
array<int,2> *st;
array<int,2>unite(array<int,2>a,array<int,2>b){
return max(a,b);
}
void build(int l, int r, int ind){
if(l==r){
st[ind][0]=0;
st[ind][1]=l;
return;
}
int mid = (l+r)/2;
build(l,mid,ind*2+1);
build(mid+1,r,ind*2+2);
st[ind]=unite(st[ind*2+1],st[ind*2+2]);
}
segTree(int n){
int x = ceil(log2(n));
x++;
st=new array<int,2>[(1<<x)];
build(0,n-1,0);
}
void update(int l, int r, int i, int val, int ind){
if(i<l||i>r)
return;
if(l==r){
st[ind][0]=val;
return;
}
int mid = (l+r)/2;
update(l,mid,i,val,ind*2+1);
update(mid+1,r,i,val,ind*2+2);
st[ind]=unite(st[ind*2+1],st[ind*2+2]);
}
array<int,2>query(int l, int r, int s, int e, int ind){
if(e<l||s>r){
return {0,-1};
}
if(s<=l&&r<=e){
return st[ind];
}
int mid = (l+r)/2;
return unite(query(l,mid,s,e,ind*2+1),query(mid+1,r,s,e,ind*2+2));
}
};
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin >> n >> m;
array<int,2>init[n];
for(int i = 0;i<n;i++){
cin >> init[i][0];
cin >> init[i][1];
}
vector<array<int,2>>arr;
for(int i = 0;i<n;i++){
if(init[i][0]<=init[i][1]){
///day worker
arr.push_back(init[i]);
init[i][0]+=m;
init[i][1]+=m;
arr.push_back(init[i]);
}
else{
///night worker
init[i][1]+=m;
arr.push_back(init[i]);
}
}
sort(arr.begin(),arr.end());
///sorted on starts
n=arr.size();
const int lg = 20;
int par[n][lg];
segTree st(n);
for(int i = n-1;i>=0;i--){
st.update(0,n-1,i,arr[i][1],0);
int endp = lower_bound(arr.begin(),arr.end(),(array<int,2>){arr[i][1]+1,-1})-arr.begin()-1;
array<int,2>a = st.query(0,n-1,i,endp,0);
par[i][0]=a[1];
}
for(int i = n-1;i>=0;i--){
for(int j = 1;j<lg;j++){
par[i][j]=par[par[i][j-1]][j-1];
}
}
int ans = 1e9;
for(int i = n-1;i>=0;i--){
int mne = arr[i][0]+m;
///find first in parents who excess mne
int curr = i;
int cnt = 1;
for(int j = lg-1;j>=0;j--){
if(arr[par[curr][j]][1]>=mne)
continue;
cnt+=(1<<j);
curr=par[curr][j];
}
curr=par[curr][0];
cnt++;
if(arr[curr][1]>=mne){
ans=min(ans,cnt);
}
}
if(ans==1e9){
cout << -1;
}
else{
cout << ans;
}
return 0;
}