#include <bits/stdc++.h>
using namespace std;
#define int long long
int ans = 1e9 + 5; //最小隔阂
int maxhp = 0; //最大愉悦
void solve()
{
int n, k; cin >> n >> k;
vector<pair<int,int>> a(n + 1,{0,0}), b(n + 1, {0,0});
for (int i = 1; i <= n; i++) //输入财富,second是下表
{
cin >> a[i].first;
a[i].second = i;
}
for (int i = 1; i <= n; i++) //输入愉悦值,second是下表
{
cin >> b[i].first;
b[i].second = i;
}
sort(a.begin() + 1, a.begin() + 1 + n); //按照财富排序
vector<int> pre(n + 1, 0);
for (int i = 1; i <= n; i++) //财富排序后的愉悦值前缀和
{
int idx = a[i].second;
pre[i] = b[idx].first + pre[i - 1];
}
int l = 1, r = 1;
while (l <= n && r <= n)
{
int idxr = a[r].second, idxl = a[l].second; //计算原始下表
int hp = pre[r] - pre[l - 1]; //计算愉悦值
if (hp < k)
{
r++;
}
else
{
if (hp >= maxhp)
ans = min(ans, abs(a[r].first - a[l].first)); //更新最小隔阂
else
maxhp = hp;
l++;
}
}
if (ans == 1e9 + 5)
cout << -1;
else
std::cout << ans << endl;
}
signed main()
{
solve();
return 0;
}