func_code_string: #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));       }     }   }   