#include <bits/stdc++.h>
using namespace std;
long long int p4[] = {-1, 1, 0, 0};
long long int q4[] = {0, 0, 1, -1};
long long int p8[] = {-1, 1, 0, 0, -1, 1, -1, 1};
long long int q8[] = {0, 0, 1, -1, 1, 1, -1, -1};
long long int gcd(long long int a, long long int b) {
  if (b > a) gcd(b, a);
  return ((b == 0) ? a : gcd(b, a % b));
}
long long int LCM(long long int a, long long int b) {
  long long int p = (a * b) / (gcd(a, b));
  return p;
}
long long int BigMod(long long int a, long long int b, long long int m) {
  if (!b) return 1;
  long long int ans = BigMod(a, b / 2, m);
  ans = (ans * ans) % m;
  if (b & 1) ans = (ans * a) % m;
  return ans;
}
long long int Mod_inv(long long int a) {
  return BigMod(a, 1000000007LL - 2, 1000000007LL);
}
long long int arra[78502];
bool arre[1000002];
long long int pl = 0;
void prime_seive() {
  memset(arre, true, sizeof(arre));
  arre[0] = arre[1] = false;
  for (int i = 4; i <= 1000000; i += 2) arre[i] = false;
  for (int i = 3; i * i <= 1000000; i += 2)
    if (arre[i])
      for (int j = i * i; j <= 1000000; j += i + i) arre[j] = false;
  arra[pl++] = 2;
  for (int i = 3; i <= 1000000; i += 2)
    if (arre[i]) arra[pl++] = i;
}
long long int prime(long long int a) {
  prime_seive();
  if (a == 1)
    return 1;
  else if (a == 2)
    return 0;
  else if (a % 2 == 0)
    return 1;
  else
    for (int i = 1; i < pl && (arra[i] * arra[i] <= a); i++)
      if (a % arra[i] == 0) return 1;
  return 0;
}
long long int a[1000005], b[1000005];
vector<long long int> v, v1, v2;
map<long long int, long long int> mp;
int main() {
  long long int i, j, k, l, m, n, c, d, p, q;
  long long int cs = 0, tc, t = 1, flg, f, sm;
  double x, y, x1, y1, r, h;
  string s, s1, s2;
  while (cin >> r >> x >> y >> x1 >> y1) {
    if (x == x1 && y == y1)
      cout << "0" << endl;
    else {
      h = sqrt(pow(abs(x - x1), 2) + pow(abs(y - y1), 2));
      p = ceil(h / (2.00 * r));
      cout << p << endl;
    }
  }
  return 0;
}
