#include <bits/stdc++.h>
using namespace std;
const int INF = 1e9;
const int N = 1e7 + 100;
unordered_map<int, int> vis, Cnt;
vector<int> Mice;
vector<int> Cheese;
int main() {
  int n, m, y0, y1;
  scanf("%d%d%d%d", &n, &m, &y0, &y1);
  for (int i = 0; i < n; i++) {
    int x;
    scanf("%d", &x);
    Mice.push_back(x);
  }
  for (int i = 0; i < m; i++) {
    int x;
    scanf("%d", &x);
    Cheese.push_back(x);
  }
  int Ans = 0;
  for (int x : Mice) {
    int L = INF, R = INF;
    auto it = lower_bound(Cheese.begin(), Cheese.end(), x);
    if (it != Cheese.end()) R = *it;
    if (it != Cheese.begin()) it--;
    L = *it;
    int cur = min(abs(x - L), abs(R - x));
    if (x - L == R - x) {
      if (!vis.count(L))
        vis[L] = x - L, Cnt[L] = 1;
      else {
        if (vis[L] == x - L)
          Cnt[L]++;
        else {
          if (!vis.count(R))
            vis[R] = cur, Cnt[R] = 1;
          else if (vis[R] > cur) {
            Ans += vis[R];
            vis[R] = cur;
            Cnt[R] = 1;
          } else if (vis[R] == cur)
            Cnt[R]++;
          else
            Ans++;
        }
      }
    } else {
      int d = (x - L < R - x ? L : R);
      if (!vis.count(d))
        vis[d] = cur, Cnt[d] = 1;
      else {
        if (vis[d] > cur) {
          Ans += Cnt[d];
          vis[d] = cur;
          Cnt[d] = 1;
        } else if (vis[d] < cur)
          Ans++;
        else
          Cnt[d]++;
      }
    }
  }
  printf("%d\n", Ans);
  return 0;
}
