#include <iostream>
#include <cmath>

enum IntersectionType{
  INCLUDED = 0,
  INSCRIBED = 1,
  INTERSECTED = 2,
  CIRCUMSCRIBED = 3,
  NOT_INTERSECTED = 4,
};

struct Circle2D{
  int JudgeIntersection(const Circle2D& another){
    const auto distance = std::hypot(x - another.x, y - another.y);
    const auto sumRadius = r + another.r;
    if(distance == sumRadius){
      return CIRCUMSCRIBED;
    }
    if(distance > sumRadius){
      return NOT_INTERSECTED;
    }
    const auto smallerRadius = r < another.r ? r : another.r;
    const auto greaterRadius = r > another.r ? r : another.r;
    const auto sumDistSmaller = distance + smallerRadius;
    if(sumDistSmaller < greaterRadius){
      return INCLUDED;
    }
    if(sumDistSmaller > greaterRadius){
      return INTERSECTED;
    }
    return INSCRIBED;
  }
  double x;
  double y;
  double r;
};

int main(){
  Circle2D c1;
  Circle2D c2;
  std::cin >> c1.x >> c1.y >> c1.r;
  std::cin >> c2.x >> c2.y >> c2.r;
  std::cout << c1.JudgeIntersection(c2) << std::endl;
}
