#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

typedef long long ll;

bool check(const vector<pair<int, int>>& friends, ll mid, ll k) {
    int n = friends.size();
    ll total_joy = 0;
    int left = 0;
    for (int right = 0; right < n; ++right) {
        // 维持窗口的隔阂值不超过 mid
        while (friends[right].first - friends[left].first > mid) {
            total_joy -= friends[left].second;
            ++left;
        }
        // 加入当前右端点的愉悦值
        total_joy += friends[right].second;
        // 检查是否满足条件
        if (total_joy >= k) return true;
    }
    return false;
}

int main() {
    int n;
    ll k;
    cin >> n >> k;
    vector<pair<int, int>> friends(n);
    for (int i = 0; i < n; ++i) cin >> friends[i].first;
    for (int i = 0; i < n; ++i) cin >> friends[i].second;

    // 按财富值排序
    sort(friends.begin(), friends.end());

    // 二分查找隔阂值
    ll left = 0, right = 1e9, result = -1;
    while (left <= right) {
        ll mid = left + (right - left) / 2;
        if (check(friends, mid, k)) {
            result = mid;
            right = mid - 1;
        } else {
            left = mid + 1;
        }
    }

    cout << result << endl;
    return 0;
}