#include <bits/stdc++.h>
using namespace std;
int x, y, xx, yy, r, R, rr, RR;
int D(int x) { return x * x; }
int main() {
  scanf("%d%d%d%d", &x, &y, &r, &R);
  scanf("%d%d%d%d", &xx, &yy, &rr, &RR);
  int d = D(x - xx) + D(y - yy), ans = 4;
  if ((d < D(r + rr) && d > D(r - rr)) || (d < D(r + RR) && d > D(r - RR)) ||
      (d <= D(r - rr) && d <= D(r - RR) && r - rr > 0 && r - RR < 0) ||
      (d >= D(r + rr) && d <= D(r - RR)))
    ans--;
  if ((d < D(R + rr) && d > D(R - rr)) || (d < D(R + RR) && d > D(R - RR)) ||
      (d <= D(R - rr) && d <= D(R - RR) && R - rr > 0 && R - RR < 0) ||
      (d >= D(R + rr) && d <= D(R - RR)))
    ans--;
  if ((d < D(rr + r) && d > D(rr - r)) || (d < D(rr + R) && d > D(rr - R)) ||
      (d <= D(rr - r) && d <= D(rr - R) && rr - r > 0 && rr - R < 0) ||
      (d >= D(rr + r) && d <= D(rr - R)))
    ans--;
  if ((d < D(RR + r) && d > D(RR - r)) || (d < D(RR + R) && d > D(RR - R)) ||
      (d <= D(RR - r) && d <= D(RR - R) && RR - r > 0 && RR - R < 0) ||
      (d >= D(RR + r) && d <= D(RR - R)))
    ans--;
  printf("%d", ans);
  return 0;
}
