import java.awt.*;
import java.awt.geom.Area;
import java.io.*; 
import java.lang.reflect.Array;
import java.math.*;
import java.sql.SQLException;
import java.util.*;
import java.util.Map.Entry;

import javax.management.RuntimeErrorException;

import static java.lang.Math.*; 
   
public class Solution implements Runnable { 
        final boolean ONLINE_JUDGE = System.getProperty("ONLINE_JUDGE") != null; 
        BufferedReader in; 
        PrintWriter out; 
        StringTokenizer tok = new StringTokenizer(""); 
        String delim = " ";
          
        String readString() throws IOException { 
        	try {
	    		while(!tok.hasMoreTokens()) {
	    			tok = new StringTokenizer(in.readLine()); 
		        }
		        return tok.nextToken(delim);
	    	}
        	catch (Exception e){
        		return null;
	    	}
        }
         
        int readInt() throws IOException{ 
            return Integer.parseInt(readString()); 
        }   
        long readLong() throws IOException{ 
            return Long.parseLong(readString()); 
        }       
        double readDouble() throws IOException{ 
            return Double.parseDouble(readString()); 
        }        
        Point readPoint() throws IOException {
        	return new Point(readInt(), readInt());
        }        
        char readChar() throws IOException{
        	int x = 0;
        	while ((x = in.read()) == '\n' || x == '\r' || x == ' '){ }
        	return (char)x;
        }        
//----------------------------------          
        public class Three { 
            public int a, b, c; 
            public Three(){} 
            public Three(int a, int b, int c){this.a = a;this.b=b;this.c=c;} 
            public String toString(){ 
                return a + ":" + b + ":" + c; 
            }
        }
//----------------------------------------                       
                
        void solve() throws IOException {
        	int r = readInt();
        	int x = readInt();
        	int y = readInt();
        	int xx = readInt();
        	int yy = readInt();
        	
        	long length = (xx - x)*1l*(xx - x) + (yy - y)*1l*(yy - y);
        	
        	if (length == 0){
        		out.print(0);
        		return;
        	}
        	
        	long rr = r*1l*r;
        	
        	long del = (long)Math.sqrt(length/rr);
        	if (length % rr != 0){
        		del++;
        	}
        	
        	
        	out.print(max(0, del));
        }
        
//---------------------------------------- 
        public static void main(String[] args){ 
            new Thread(null, new Solution(), "", 256 * (1L << 20)).start(); 
        } 
         
        public void run(){ 
                try{ 
                        timeBegin = System.currentTimeMillis(); 
                        
                        try{ 
                            if (ONLINE_JUDGE){ 
                                in = new BufferedReader(new InputStreamReader(System.in)); 
                                out = new PrintWriter(System.out);
                            }  
                            else {                         
                            	in = new BufferedReader(new FileReader("input.txt")); 
                            	out = new PrintWriter("output.txt");                                 
                            } 
                        }catch(Throwable e){
                            in = new BufferedReader(new InputStreamReader(System.in)); 
                            out = new PrintWriter(System.out); 
                        }
                          
                        solve(); 
                        out.close(); 
                          
                        timeEnd = System.currentTimeMillis(); 
                        System.err.println("Time = " + (timeEnd - timeBegin)); 
                }catch (Exception e){ 
                        e.printStackTrace(System.err); 
                        System.exit(-1); 
                } 
        } 
         
        long timeBegin, timeEnd; 
}