#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
const double pi = 3.14159265358979323846264338;
inline long long multi(long long x, long long y) {
  long long tmp =
      (x * y -
       (long long)((long double)x / 998244353 * y + 1.0e-8) * 998244353);
  return tmp < 0 ? tmp + 998244353 : tmp;
}
long long _ceil(long long a, long long b);
long long _floor(long long a, long long b) {
  return b < 0 ? _floor(-a, -b) : a < 0 ? -_ceil(-a, b) : a / b;
}
long long _ceil(long long a, long long b) {
  return b < 0 ? _ceil(-a, -b) : a < 0 ? -_floor(-a, b) : (a + b - 1) / b;
}
long long exgcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1;
    y = 0;
    return a;
  }
  long long d = exgcd(b, a % b, y, x);
  y -= x * (a / b);
  return d;
}
int32_t main() {
  ios ::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long a1, a2, b1, b2, x0, y0;
  long long l, r;
  cin >> a1 >> b1 >> a2 >> b2 >> l >> r;
  l = max(0ll, _ceil(l - b1, a1));
  r = _floor(r - b1, a1);
  if (l > r) {
    cout << 0 << "\n";
    return 0;
  }
  long long g = exgcd(a1, -1 * a2, x0, y0);
  long long m = b2 - b1;
  if (m % g) {
    cout << 0 << "\n";
    return 0;
  }
  if (g < 0) {
    g *= -1;
    x0 *= -1;
    y0 *= -1;
  }
  long long L = _ceil(r * g - x0 * m, -a2);
  long long R = _floor(l * g - x0 * m, -a2);
  R = min(R, _floor(y0 * m, a1));
  long long ans = max(0ll, R - L + 1);
  cout << ans << "\n";
  return 0;
}
