#include <iostream>
#include <vector>
#include <algorithm>
#define repeat(i,n) for (int i = 0; (i) < (n); ++(i))
#define repeat_from(i,m,n) for (int i = (m); (i) < (n); ++(i))
typedef long long ll;
using namespace std;
int main() {
    int n, k; cin >> n >> k;
    vector<int> a(n); repeat (i,n) cin >> a[i];
    vector<int> b(n); repeat (i,n) cin >> b[i];
    ll ans = 0;
    int l = max(0, n - 20); // 20! = 2.4e18
    ll base = 0; repeat (i,l) ans += abs(a[i] - b[i]);
    while (k --) {
        ans += base;
        repeat_from (i,l,n) ans += abs(a[i] - b[i]);
        bool is_not_carried = next_permutation(a.begin() + l, a.end());
        if (not is_not_carried) {
            prev_permutation(a.begin() + l, a.end());
            next_permutation(a.begin(),     a.end());
            base = 0; repeat (i,l) ans += abs(a[i] - b[i]);
        }
    }
    cout << ans << endl;
    return 0;
}