#include<bits/stdc++.h>
typedef long long ll;
#define pb push_back
#define fr first
#define sc second
#define endl '\n'
using namespace std;
#define mid ((left+right)>>1)
int m;
struct Seg{
int n;
vector<pair<int,int>>tree,arr;
void build(int node=1,int left=0,int right=-1){
if(right==-1)right=n-1;
if(left==right){
tree[node]=arr[left];
return;
}
build(node*2,left,mid);build(node*2+1,mid+1,right);
tree[node]=max(tree[node*2],tree[node*2+1]);
}
void init(vector<pair<int,int>>Arr){
arr=Arr;
n=arr.size();
tree.resize(n<<2);
build();
}
int l,r;
pair<int,int> qu(int node=1,int left=0,int right=-1){
if(right==-1)right=n-1;
if(left>=l&&right<=r)return tree[node];
if(left>r||right<l)return{-1e9,-1};
return max(qu(node*2,left,mid),qu(node*2+1,mid+1,right));
}
pair<int,int> query(int left,int right){
l=left;r=right;
if(l>r){
r=n-1;
pair<int,int> res=qu();
r=right;
l=0;
pair<int,int>res2=qu();
res=max(res,{res2.fr+m,res2.sc});
return res;
}
return qu();
}
};
int n,k=0;
map<int,int>mp;
pair<int,int>ara[200023];
int nex[200023];
int dep[200023],vis[200023];
Seg seg;
int ans=1e9;
signed main(){
ios_base::sync_with_stdio(23^23);cin.tie(0);
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>ara[i].fr>>ara[i].sc;
mp[ara[i].fr]=0;
mp[ara[i].sc]=0;
}
for(auto&[a,b]:mp){
b=k++;
}
{
vector<pair<int,int>>arr(k,{-1e9,-1});
for(int i=1;i<=n;i++){
int dis=ara[i].sc-ara[i].fr;
if(dis<0)dis+=m;
pair<int,int>p={ara[i].fr+dis,i};
arr[mp[ara[i].fr]]=max(arr[mp[ara[i].fr]],p);
}
seg.init(arr);
}
for(int i=1;i<=n;i++){
int l=mp[ara[i].fr],r=mp[ara[i].sc];
nex[i]=seg.query(l,r).sc;
int x=nex[i];
//cerr<<nex[i]<<" ";
if(x==i)continue;
int a=ara[i].fr,b=ara[i].sc,c=ara[x].fr,d=ara[x].sc;
if(ara[i].fr>ara[i].sc)b+=m;
if(ara[x].fr>ara[x].sc)d+=m;
vector<int>v={a,b,c,d};
sort(v.begin(),v.end());
if(v[0]==a&&v[2]==b&&a+m<=v[3]){
cout<<2<<endl;
return 0;
}
}
//cerr<<endl;
for(int i=1;i<=n;i++){
if(dep[i])continue;
int pos=i;
dep[pos]=1;
vis[pos]=i;
while(dep[pos]){
if(dep[nex[pos]]){
if(nex[pos]!=pos&&vis[nex[pos]]==vis[pos]){
ans=min(ans,dep[pos]-dep[nex[pos]]+1);
}
break;
}
dep[nex[pos]]=dep[pos]+1;
vis[nex[pos]]=vis[pos];
pos=nex[pos];
}
}
if(ans==1e9)ans=-1;
cout<<ans<<endl;
}