#include <bits/stdc++.h>
using namespace std;
int N;
vector<int> P;
int hate[500][500];
bool sheet[500][500];
long long int ans;
void update(int x, int y) {
  if (x < 0 || x >= N || y < 0 || y >= N) return;
  if (hate[x][y] == 0) return;
  if (x > 0) {
    if (sheet[x - 1][y] && hate[x - 1][y] > 0 &&
        hate[x - 1][y] + 1 < hate[x][y]) {
      hate[x][y] = hate[x - 1][y] + 1;
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    } else if (!sheet[x - 1][y] && hate[x - 1][y] < hate[x][y]) {
      hate[x][y] = hate[x - 1][y];
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    }
  }
  if (x < N - 1) {
    if (sheet[x + 1][y] && hate[x + 1][y] > 0 &&
        hate[x + 1][y] + 1 < hate[x][y]) {
      hate[x][y] = hate[x + 1][y] + 1;
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    } else if (!sheet[x + 1][y] && hate[x + 1][y] < hate[x][y]) {
      hate[x][y] = hate[x + 1][y];
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    }
  }
  if (y > 0) {
    if (sheet[x][y - 1] && hate[x][y - 1] > 0 &&
        hate[x][y - 1] + 1 < hate[x][y]) {
      hate[x][y] = hate[x][y - 1] + 1;
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    } else if (!sheet[x][y - 1] && hate[x][y - 1] < hate[x][y]) {
      hate[x][y] = hate[x][y - 1];
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    }
  }
  if (y < N - 1) {
    if (sheet[x][y + 1] && hate[x][y + 1] > 0 &&
        hate[x][y + 1] + 1 < hate[x][y]) {
      hate[x][y] = hate[x][y + 1] + 1;
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    } else if (!sheet[x][y + 1] && hate[x][y + 1] < hate[x][y]) {
      hate[x][y] = hate[x][y + 1];
      update(x - 1, y);
      update(x + 1, y);
      update(x, y - 1);
      update(x - 1, y + 1);
    }
  }
}
void out(int o) {
  int x, y;
  o--;
  x = o / N;
  y = o % N;
  ans += hate[x][y];
  sheet[x][y] = false;
  update(x, y);
  if (x > 0) {
    update(x - 1, y);
  }
  if (y > 0) {
    update(x, y - 1);
  }
  if (x < N - 1) {
    update(x + 1, y);
  }
  if (y < N - 1) {
    update(x, y + 1);
  }
  update(x, y);
}
int main() {
  cin >> N;
  P.resize(N * N);
  for (int i = 0; i < N * N; i++) {
    cin >> P[i];
    hate[i / N][i % N] =
        min(min(i / N, N - i / N - 1), min(i % N, N - i % N - 1));
    sheet[i / N][i % N] = true;
  }
  for (int i = 0; i < N * N; i++) {
    out(P[i]);
  }
  cout << ans << endl;
  return 0;
}
