#include <bits/stdc++.h>
using namespace std;
struct circle {
  int x, y, r, R;
};
int i, j, k, m, n, l;
circle c[2];
int cal(circle c1, circle c2) {
  int ret = 0;
  int dis = ((c1.x - c2.x) * (c1.x - c2.x)) + ((c1.y - c2.y) * (c1.y - c2.y));
  if (c2.r >= c1.r && ((c2.r - c1.r) * (c2.r - c1.r)) >= dis)
    ret++;
  else if (c1.r >= c2.R && ((c1.r - c2.R) * (c1.r - c2.R)) >= dis)
    ret++;
  else if (((c1.r + c2.R) * (c1.r + c2.R)) <= dis)
    ret++;
  if (c2.r >= c1.R && ((c2.r - c1.R) * (c2.r - c1.R)) >= dis)
    ret++;
  else if (c1.R >= c2.R && ((c1.R - c2.R) * (c1.R - c2.R)) >= dis)
    ret++;
  else if (((c1.R + c2.R) * (c1.R + c2.R)) <= dis)
    ret++;
  return ret;
}
int main() {
  {
    for (i = 0; i < 2; i++) cin >> c[i].x >> c[i].y >> c[i].r >> c[i].R;
    int ans = 0;
    for (i = 0; i < 2; i++) ans += cal(c[i], c[1 - i]);
    cout << ans << endl;
  }
  return 0;
}
