#include <bits/stdc++.h>
using namespace std;
int main() {
  long long x = 0, y = 0, l = 0, r = 0;
  cin >> x >> y >> l >> r;
  set<long long> st;
  for (int a = 0; a <= 61; a++) {
    for (int b = 0; b <= 61; b++) {
      long long o = 1l * powl(x, a);
      o += 1l * powl(y, b);
      if (o - l >= 0 && o - r <= 0) {
        st.insert(o);
      }
    }
  }
  if (binary_search(st.begin(), st.end(), l) == 0) {
    st.insert(l - 1);
  }
  if (binary_search(st.begin(), st.end(), r) == 0) {
    st.insert(r + 1);
  }
  long long mxd = 0;
  set<long long>::iterator it = st.begin();
  while (it != st.end()) {
    long long f = *it;
    it++;
    if (it == st.end()) break;
    long long s = *it;
    mxd = max(mxd, s - f);
  }
  if (mxd == 0)
    cout << 0 << '\n';
  else
    cout << mxd - 1 << '\n';
}
