#include <bits/stdc++.h>
using namespace std;
int res(int a, int b, int c, int d, int va) {
  if (a > va) {
    a -= va;
    b -= va;
  }
  if (c > va) {
    c -= va;
    d -= va;
  }
  if (a > b or c > d) return 0;
  if (c < a) {
    swap(a, c);
    swap(b, d);
  }
  if (b >= d) return d - c + 1;
  if (b < va and d < va) return res(a, b, c, d, va / 2);
  if (b >= va and d >= va) {
    return max(min(b, d) - max(a, c) + 1,
               max(res(a, va - 1, c, d, va), res(1, b - va, c, d, va)));
  }
  if (d >= va) {
    swap(a, c);
    swap(b, d);
  }
  int one = res(a, va - 1, c, d, va / 2), two = res(1, b - va, c, d, va / 2);
  return max(one, two);
}
int uno, dos, tres, cuatro;
int main() {
  cin >> uno >> dos >> tres >> cuatro;
  cout << res(uno, dos, tres, cuatro, 536870912) << "\n";
  return 0;
}
