#include <bits/stdc++.h>
using namespace std;
long long ext_gcd(long long a, long long b, long long &x, long long &y) {
  if (b == 0) {
    x = 1, y = 0;
    return a;
  }
  long long g = ext_gcd(b, a % b, y, x);
  y -= x * (a / b);
  return g;
}
long long gcd(long long a, long long b) {
  long long x, y;
  return ext_gcd(a, b, x, y);
}
long long inv(long long a, long long b) {
  long long x, y, g = ext_gcd(a, b, x, y);
  return (x % b + b) % b;
}
int main() {
  long long a, b, a2, b2, L, R;
  scanf("%lld%lld%lld%lld%lld%lld", &a, &b, &a2, &b2, &L, &R);
  if (b < b2) swap(a, a2), swap(b, b2);
  long long ans = -1;
  if (gcd(a, a2) == 1) {
    long long x = ((inv(a, a2) * (b2 - b) % a2) + a2) % a2;
    long long lcm = a * a2;
    long long sam = b + a * x;
    long long u = sam > R ? 0 : (R - sam) / lcm + 1;
    long long d = sam > L - 1 ? 0 : (L - 1 - sam) / lcm + 1;
    ans = u - d;
  } else {
    long long g = gcd(a, a2);
    if ((b - b2) % g != 0)
      ans = 0;
    else {
      long long c = a / g, c2 = a2 / g;
      long long x = (inv(c, c2) * ((b2 - b) / g) % c2 + c2) % c2;
      long long lcm = c * c2 * g;
      long long sam = b + a * x;
      long long u = sam > R ? 0 : (R - sam) / lcm + 1;
      long long d = sam > L - 1 ? 0 : (L - 1 - sam) / lcm + 1;
      ans = u - d;
    }
  }
  printf("%lld\n", ans);
}
