import java.io.*;
import java.util.*;
import java.lang.StringBuilder;

public class Main {
	public static void main(String[] args) {
		MyScanner myScanner = new MyScanner();
		PrintWriter printWriter = new PrintWriter(new BufferedOutputStream(System.out));
		new Solver().solve(myScanner, printWriter);
		printWriter.close();
	}

	private static class Solver {
		public Solver() {
		}

		public long calcSqrDist(long Xi,long Yi,long Xf,long Yf){
			long dx = Xi-Xf;
			long dy = Yi-Yf;
			return dx*dx + dy*dy;
		}

		public void solve(MyScanner in, PrintWriter out) {
			long r = in.nextLong();

			long Xi = in.nextLong();
			long Yi = in.nextLong();

			long Xf = in.nextLong();
			long Yf = in.nextLong();

			long diamSqr = 4*r*r;
			long distSqr = this.calcSqrDist(Xi,Yi,Xf,Yf);

			long k = 0;
			while(distSqr > diamSqr*(k+1L)*(k+1L)){
				k++;
			}
			out.println(k + 1);
		}
	}

	private static class MyScanner {
		BufferedReader br;
		StringTokenizer st;

		public MyScanner() {
			br = new BufferedReader(new InputStreamReader(System.in));
		}

		String next() {
			while (st == null || !st.hasMoreElements()) {
				try {
					st = new StringTokenizer(br.readLine());
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			return st.nextToken();
		}

		int nextInt() {
			return Integer.parseInt(next());
		}

		long nextLong() {
			return Long.parseLong(next());
		}

		double nextDouble() {
			return Double.parseDouble(next());
		}

		String nextLine() {
			String str = "";
			try {
				str = br.readLine();
			} catch (IOException e) {
				e.printStackTrace();
			}
			return str;
		}

	}

}