#include <bits/stdc++.h>
using namespace std;
mt19937 rnd(228);
void add(int my_l, int my_r, const vector<int> &b, vector<int> &cnt, int i) {
  int n = (int)b.size();
  int get_l = lower_bound(b.begin(), b.end(), my_l) - b.begin();
  int get_r = upper_bound(b.begin(), b.end(), my_r) - b.begin() - 1;
  if (get_l <= get_r) {
    int add_l = get_l - i + n;
    int add_r = get_r - i + n;
    if (add_l >= n) add_l -= n;
    if (add_r >= n) add_r -= n;
    if (add_l <= add_r) {
      cnt[add_l]++;
      cnt[add_r + 1]--;
    } else {
      cnt[add_l]++;
      cnt[0]++;
      cnt[add_r + 1]--;
    }
  }
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int n, L;
  cin >> n >> L;
  vector<int> a(n), b(n);
  for (int i = 0; i < n; i++) {
    cin >> a[i];
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
  }
  sort(a.begin(), a.end());
  sort(b.begin(), b.end());
  int vl = -1, vr = L;
  while (vl < vr - 1) {
    int x = (vl + vr) / 2;
    vector<int> cnt(n + 1);
    for (int i = 0; i < n; i++) {
      int my_l = max(0, a[i] - x), my_r = min(L - 1, a[i] + x);
      int pref_add = -1, suf_add = L;
      if (a[i] - (L - x) >= my_l) {
        my_l = 0;
      } else {
        pref_add = max(-1, a[i] - (L - x));
      }
      if (a[i] + (L - x) <= my_r) {
        my_r = L - 1;
      } else {
        suf_add = min(L, a[i] + (L - x));
      }
      add(my_l, my_r, b, cnt, i);
      add(0, pref_add, b, cnt, i);
      add(suf_add, L - 1, b, cnt, i);
    }
    bool good = false;
    for (int i = 1; i <= n; i++) {
      cnt[i] += cnt[i - 1];
    }
    for (int i = 0; i < n; i++) {
      if (cnt[i] == n) {
        good = true;
      }
    }
    if (good) {
      vr = x;
    } else {
      vl = x;
    }
  }
  cout << vr << '\n';
}
