#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b) { return (b != 0 ? gcd(b, a % b) : a); }
int lcm(int a, int b) { return (a / gcd(a, b) * b); }
int Set(int N, int pos) { return N = N | (1 << pos); }
int Reset(int N, int pos) { return N = N & ~(1 << pos); }
bool Check(int N, int pos) { return (bool)(N & (1 << pos)); }
int R[] = {1, -1, 0, 0, 1, -1, -1, 1};
int C[] = {0, 0, 1, -1, 1, -1, 1, -1};
int KR[] = {-2, -2, -1, 1, 2, 2, -1, 1};
int KC[] = {1, -1, 2, 2, 1, -1, -2, -2};
struct P {
  double x, y;
  P(double x = 0.0, double y = 0.0) {
    this->x = x;
    this->y = y;
  }
};
P mkv(P ae, P be) { return P(be.x - ae.x, be.y - ae.y); }
double dtp(P ae, P be) { return (ae.x * be.x + ae.y * be.y); }
double crp(P ae, P be) { return (ae.x * be.y - ae.y * be.x); }
double val(P ae) { return sqrt(dtp(ae, ae)); }
P vresize(P ae, double llen) {
  double v = val(ae);
  return P(ae.x * llen / v, ae.y * llen / v);
}
double ART(P ae, P be) { return crp(ae, be) / 2.0; }
P rot(P ae, double ang) {
  return P(ae.x * cos(ang) - ae.y * sin(ang),
           ae.y * cos(ang) + ae.x * sin(ang));
}
int main() {
  double r, x, xx, y, yy, dis, kk;
  int k;
  scanf("%lf %lf %lf %lf %lf", &r, &x, &y, &xx, &yy);
  dis = sqrt((x - xx) * (x - xx) + (y - yy) * (y - yy));
  if (dis < r) {
    printf("2\n");
    return 0;
  }
  kk = dis / (2.0 * r);
  k = kk;
  if (fabs(dis - 2.0 * r * (double)k) < 1e-9)
    printf("%d\n", k);
  else
    printf("%d\n", k + 1);
  return 0;
}
