#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) { return b == 0 ? a : gcd(b, a % b); }
long long exgcd(long long &x, long long &y, long long a, long long b) {
  if (!b) {
    x = 1, y = 0;
    return a;
  }
  long long x1, y1;
  long long d = exgcd(x1, y1, b, a % b);
  x = y1, y = x1 - a / b * y1;
  return d;
}
long long KSC(long long a, long long b, long long c) {
  long long res = 0;
  while (b) {
    if (b & 1) res = (res + a) % c;
    a = (a << 1) % c;
    b >>= 1;
  }
  return res;
}
long long l, r;
long long a1, a2, b1, b2;
long long x, m = 1;
int main() {
  long long d, d1;
  scanf("%lld%lld", &a1, &b1);
  m = a1, x = b1;
  for (int i = 1; i < 2; i++) {
    long long t, y;
    scanf("%lld%lld", &a2, &b2);
    d = exgcd(t, y, m, a2);
    if ((b2 - x) % d) {
      printf("0");
      return 0;
    }
    t = KSC(t, ((b2 - x) / d % (a2 / d) + a2 / d) % (a2 / d), a2 / d);
    x += t * m;
    m = m / gcd(m, a2) * a2;
  }
  x = (x % m + m) % m;
  long long k = (max(b1, b2) - x) / m;
  if (max(b1, b2) - x >= 0 && (max(b1, b2) - x) % m) k++;
  if (max(b1, b2) - x < 0 && !(max(b1, b2) - x) % m) k++;
  x = x + k * m;
  scanf("%lld%lld", &l, &r);
  if (x > r) {
    printf("0");
    return 0;
  }
  if (x >= l) {
    printf("%lld", (r - x) / m + 1);
    return 0;
  }
  if (x < l) {
    int x1;
    if ((l - x) % m)
      x1 = (l - x) / m + 1;
    else
      x1 = (l - x) / m;
    printf("%lld", (r - x) / m + 1 - x1);
    return 0;
  }
  return 0;
}
