#include<bits/stdc++.h>
#define ll long long
#define mid ((l+r)>>1)
#define ls (x<<1)
#define rs (x<<1|1)
using namespace std;
const int N=5e5+10;
int n,m,dian[N<<4],ans=0x3f3f3f3f,sum[N<<4],he[N<<4];
struct qvjian{
int l,r;
}a[N];
bool cmp(qvjian a,qvjian b){
return (a.r-a.l)<(b.r-b.l);
}
void jia(int x,int l,int r,int L,int R,int jias){
if(l==L&&r==R){
he[x]+=jias;
sum[x]+=jias;
return;
}
if(L<=mid)jia(ls,l,mid,L,min(R,mid),jias);
if(R>mid)jia(rs,mid+1,r,max(mid+1,L),R,jias);
sum[x]=max(sum[ls],sum[rs])+he[x];
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i].l>>a[i].r;
dian[i*2-1]=a[i].l;
dian[i*2]=a[i].r;
}
sort(dian+1,dian+2*n+1);
int nn=unique(dian+1,dian+2*n+1)-dian-1;
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
a[i].l=lower_bound(dian+1,dian+nn+1,a[i].l)-dian;
a[i].r=lower_bound(dian+1,dian+nn+1,a[i].r)-dian;
}
int l,r;
for(l=1,r=0;l<=n;jia(1,1,nn,a[l].l,a[l].r,1),l++){
while(r<n&&sum[1]<m){
r++;
jia(1,1,nn,a[r].l,a[r].r,1);
}
if(sum[1]<m&&r==n)break;
ans=min(ans,(dian[a[r].r]-dian[a[r].l]-dian[a[l].r]+dian[a[l].l]));
}
if(ans!=0x3f3f3f3f)cout<<ans<<endl;
else cout<<"-1\n";
return 0;
}