#include <bits/stdc++.h>
using namespace std;
int calc(int L1, int R1, int L2, int R2, int k) {
  int Len = 1 << k;
  if (L1 > R1 || R2 < L2) return 0;
  if (L2 < L1 || L2 == L1 && R2 > R1) return calc(L2, R2, L1, R1, k);
  if (R1 >= R2) return R2 - L2 + 1;
  if (L2 > Len) return calc(L1, R1, L2 - Len, R2 - Len, k);
  if (R2 < Len && R1 < Len)
    return calc(L1, R1, L2, R2, k - 1);
  else
    return max(max(calc(L1, R1, L2, Len - 1, k), calc(1, R2 - Len, L1, R1, k)),
               R1 - L2 + 1);
}
int main() {
  int L1, L2, R1, R2;
  scanf("%d %d %d %d", &L1, &R1, &L2, &R2);
  printf("%d\n", calc(L1, R1, L2, R2, 30));
  return 0;
}
