Meg the Rabbit decided to do something nice, specifically — to determine the shortest distance between two points on the surface of our planet. But Meg... what can you say, she wants everything simple. So, she already regards our planet as a two-dimensional circle. No, wait, it's even worse — as a square of side n. Thus, the task has been reduced to finding the shortest path between two dots on a square (the path should go through the square sides). To simplify the task let us consider the vertices of the square to lie at points whose coordinates are: (0, 0), (n, 0), (0, n) and (n, n).

Input

The single line contains 5 space-separated integers: n, x1, y1, x2, y2 (1 ≤ n ≤ 1000, 0 ≤ x1, y1, x2, y2 ≤ n) which correspondingly represent a side of the square, the coordinates of the first point and the coordinates of the second point. It is guaranteed that the points lie on the sides of the square.

Output

You must print on a single line the shortest distance between the points.

Examples

Input

2 0 0 1 0


Output

1


Input

2 0 1 2 1


Output

4


Input

100 0 0 100 100


Output

200
import java.util.*;
import java.lang.*;
import java.io.*;
public class Codechef
{       static PrintWriter out=new PrintWriter(System.out);static FastScanner in = new FastScanner(System.in);static class FastScanner {BufferedReader br;StringTokenizer stok;FastScanner(InputStream is) {br = new BufferedReader(new InputStreamReader(is));}
        String next() throws IOException {while (stok == null || !stok.hasMoreTokens()) {String s = br.readLine();if (s == null) {return null;}
                stok = new StringTokenizer(s);}return stok.nextToken();}
        int ni() throws IOException {return Integer.parseInt(next());}long nl() throws IOException {return Long.parseLong(next());}double nd() throws IOException {return Double.parseDouble(next());}char nc() throws IOException {return (char) (br.read());}String ns() throws IOException {return br.readLine();}
        int[] nia(int n) throws IOException{int a[] = new int[n];for (int i = 0; i < n; i++)a[i] = ni();return a;}long[] nla(int n) throws IOException {long a[] = new long[n];for (int i = 0; i < n; i++)a[i] = nl();return a;}
        double[] nda(int n)throws IOException {double a[] = new double[n];for (int i = 0; i < n; i++)a[i] = nd();return a;}int [][] imat(int n,int m) throws IOException{int mat[][]=new int[n][m];for(int i=0;i<n;i++){for(int j=0;j<m;j++)mat[i][j]=ni();}return mat;}
    }
	static long mod=Long.MAX_VALUE;
	static ArrayList<pair> arr1=new ArrayList<>();
	static ArrayList<pair> arr2=new ArrayList<>();
	static int a[][];
	static int n;
	public static void main (String[] args) throws java.lang.Exception
	{   int i,j;
	    
	    int n=in.ni();
	    int x1=in.ni();
	    int y1=in.ni();
	    int x2=in.ni();
	    int y2=in.ni();
	    int ans=0;
	    if((x1==0 && x2==n)||(x2==0 && x1==n)||(y1==0 && y2==n)||(y2==0 && y1==n))
	    {   if((x1==0 && x2==n)||(x2==0 && x1==n))
    	        ans=Math.min(n-y1+n-y2+n,n+y1+y2);
	        else if((y1==0 && y2==n)||(y2==0 && y1==n))
	            ans=Math.min(n-x1+n-x2+n,n+x1+x2);
	    }
	    else
	        ans=Math.abs(x1-x2)+Math.abs(y1-y2);
	    out.println(ans);
	    
	    out.close();
	}
	static void dfs(int i,int j,ArrayList<pair> arr,boolean visited[][])
	{   if(visited[i][j])
	        return ;
	    visited[i][j]=true;
	    arr.add(new pair(i,j));
	    if(j-1>=0 && a[i][j-1]!=1 && !visited[i][j-1])
	        dfs(i,j-1,arr,visited);
	    if(i-1>=0 && a[i-1][j]!=1 && !visited[i-1][j])
	        dfs(i-1,j,arr,visited);
	    if(j+1<=n-1 && a[i][j+1]!=1 && !visited[i][j+1])
	        dfs(i,j+1,arr,visited);
	    if(i+1<=n-1 && a[i+1][j]!=1 && !visited[i+1][j])
	        dfs(i+1,j,arr,visited);
	}
	static int count(long x)
	{   int temp=0;
	    while(x%3==0)
	        {x=x/3;temp++;}
	    return temp;     
	}
	static class pair implements Comparable<pair>{
		long x, y;
		public pair(long x, long  y){this.x = x; this.y = y;}
		@Override
		public int compareTo(pair arg0) 
		{   if(x<arg0.x)    return -1;
		    else if(x==arg0.x)
		    {   if(y<arg0.y)    return -1;
		        else if(y>arg0.y)   return 1;
		        else    return 0;
		    }
		    else    return 1;
		}
	}
	static long gcd(long a,long b)
	{   if(b==0)
	        return a;
	    return gcd(b,a%b);    
	}
	static long exponent(long a,long n)
	{   long ans=1;
	    while(n!=0)
	    {   if(n%2==1)
	            ans=(ans*a)%mod;
	       a=(a*a)%mod;
	       n=n>>1;
	    }
	    return ans;
	}
	static int binarySearch(ArrayList<Integer> arr, int item, int low, int high) 
    {   if (high-low==1) 
        {   if(item==arr.get(low))
                return low;
            else if(item>arr.get(low) && arr.get(high)>item)
                return low;
            else if(item>=arr.get(high))
                return high;
        }
        int mid = (low + high)/2; 
        if(item > arr.get(mid)) 
            return binarySearch(arr, item, mid, high); 
        return binarySearch(arr, item, low, mid); 
    }
    static int binarySearch2(ArrayList<Integer> arr, int item, int low, int high) 
    {   if (high-low==1) 
        {   if(item==arr.get(low))
                return low;
            else if(item>arr.get(low) && arr.get(high)>arr.get(item))
                return low;
            else if(item>=arr.get(high))
                return high;
        }
        int mid = (low + high)/2; 
        if(item < arr.get(mid)) 
            return binarySearch2(arr, item, low, mid);
        return binarySearch2(arr, item, mid, high);    
    }
    static void merge(int arr[], int l, int m, int r) {   
        int n1 = m - l + 1; int n2 = r - m; int L[] = new int [n1]; int R[] = new int [n2]; 
        
        for (int i=0; i<n1; ++i) L[i] = arr[l + i]; for (int j=0; j<n2; ++j) R[j] = arr[m + 1+ j]; int i = 0, j = 0; int k = l; while (i < n1 && j < n2) {   if (L[i] <= R[j]) {   arr[k] = L[i]; i++; } else{   arr[k] = R[j]; j++; } k++; } while (i < n1){   arr[k] = L[i]; i++; k++; } while (j < n2) { arr[k] = R[j];   j++;     k++; } 
    } 
    static void Sort(int arr[], int l, int r) {if (l < r) {   int m = (l+r)/2; Sort(arr, l, m); Sort(arr , m+1, r); merge(arr, l, m, r); } } 
    
    static void sort(int a[])
    {Sort(a,0,a.length-1);}
}