#include <bits/stdc++.h>
using namespace std;
struct node {
  int x, y;
  node(int a, int b) { x = a, y = b; }
};
int d1[1010][1010];
int main() {
  int n, t;
  queue<node> Q;
  for (int i = 0; i <= 1000; i++) {
    for (int j = 0; j <= 1000; j++) {
      d1[i][j] = 5000;
    }
  }
  int a, b, c, d;
  cin >> n >> a >> b >> c >> d;
  Q.push(node(a, b));
  d1[a][b] = 0;
  while (!Q.empty()) {
    node v = Q.front();
    Q.pop();
    int q = v.x;
    int w = v.y;
    if (q == c && w == d) {
      cout << d1[q][w];
      return 0;
    }
    if (q + 1 <= n && (w == 0 || w == n) && d1[q + 1][w] > d1[q][w] + 1) {
      d1[q + 1][w] = d1[q][w] + 1;
      Q.push(node(q + 1, w));
    }
    if (q - 1 >= 0 && (w == 0 || w == n) && d1[q - 1][w] > d1[q][w] + 1) {
      d1[q - 1][w] = d1[q][w] + 1;
      Q.push(node(q - 1, w));
    }
    if (w + 1 <= n && (q == 0 || q == n) && d1[q][w + 1] > d1[q][w] + 1) {
      d1[q][w + 1] = d1[q][w] + 1;
      Q.push(node(q, w + 1));
    }
    if (w - 1 >= 0 && (q == 0 || q == n) && d1[q][w - 1] > d1[q][w] + 1) {
      d1[q][w - 1] = d1[q][w] + 1;
      Q.push(node(q, w - 1));
    }
  }
}
