//暴搜答案
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 110;
int n,v;
int me[N],gf[N];
int ans=0x3f3f3f3f;
bool st[N];
int e;
void dfs(int u,int a,int b){
e++;
if(e>1e8)return;
if(a+b>=v){
ans=min(ans,abs(a-b));
}
if(!ans){return;}
for(int i=u;i<=n;i++){
if(!st[i]){
st[i]=true;
dfs(u+1,a+me[i],b+gf[i]);
st[i]=false;
}
}
}
int main(){
scanf("%d%d",&n,&v);
for(int i=1;i<=n;i++){
scanf("%d%d",&me[i],&gf[i]);
}
dfs(0,0,0);
printf("%d",(ans==0x3f3f3f3f?-1:ans));
return 0;
}