#include <bits/stdc++.h>
using namespace std;
const int INF = 1000000000;
const int diri[4] = {-1, 0, 1, 0};
const int dirj[4] = {0, 1, 0, -1};
int A, B;
int va[110000], vb[110000];
bool esquerra(int a, int b) {
  if (b < 0) return false;
  if (a == 0) return true;
  return va[a - 1] < vb[b];
}
bool dreta(int a, int b) {
  if (b + 1 >= B) return false;
  if (a + 1 == A) return true;
  return va[a + 1] > vb[b + 1];
}
int main() {
  int spam;
  cin >> A >> B >> spam >> spam;
  for (int i = 0; i < int(A); ++i) cin >> va[i];
  for (int i = 0; i < int(B); ++i) cin >> vb[i];
  vector<int> dist(B, -1);
  int res = A;
  int b = -1;
  for (int a = 0; a < A; ++a) {
    while (b + 1 < B and vb[b + 1] <= va[a]) ++b;
    int d = INF;
    if (0 <= b and b < B) d = min(d, abs(va[a] - vb[b]));
    if (b + 1 < B) d = min(d, abs(va[a] - vb[b + 1]));
    if (esquerra(a, b) and d == abs(va[a] - vb[b])) {
      if (dist[b] == -1 or dist[b] == d) {
        dist[b] = d;
        --res;
        continue;
      }
    }
    if (dreta(a, b) and d == abs(va[a] - vb[b + 1])) {
      dist[b + 1] = d;
      --res;
      continue;
    }
  }
  cout << res << endl;
}
