#include <bits/stdc++.h>
using namespace std;
long long t;
long long n;
long long p[505];
long long strc[2][505][2005];
void add(long long l, long long r, long long rc, long long id, long long pos,
         long long tar, long long val) {
  if (tar < l || r < tar) return;
  if (l == r) {
    strc[rc][id][pos] += val;
    return;
  }
  add(l, (l + r) / 2, rc, id, pos * 2, tar, val);
  add((l + r) / 2 + 1, r, rc, id, pos * 2 + 1, tar, val);
  strc[rc][id][pos] = strc[rc][id][pos * 2] + strc[rc][id][pos * 2 + 1];
}
long long get_s(long long l, long long r, long long rc, long long id,
                long long pos, long long L, long long R) {
  if (R < l || r < L) {
    return 0;
  }
  if (L <= l && r <= R) {
    return strc[rc][id][pos];
  }
  return get_s(l, (l + r) / 2, rc, id, pos * 2, L, R) +
         get_s((l + r) / 2 + 1, r, rc, id, pos * 2 + 1, L, R);
}
long long ans = 0;
int main() {
  t = 1;
  for (int _ = 1; _ <= t; _++) {
    cin >> n;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < n; j++) {
        add(0, n - 1, 0, i, 1, j, 1);
        add(0, n - 1, 1, j, 1, i, 1);
      }
    }
    for (int i = 0; i < n * n; i++) {
      cin >> p[i];
      p[i]--;
      long long best[4];
      best[0] = get_s(0, n - 1, 0, p[i] / n, 1, 0, p[i] % n - 1);
      best[1] = get_s(0, n - 1, 0, p[i] / n, 1, p[i] % n + 1, n - 1);
      best[2] = get_s(0, n - 1, 1, p[i] % n, 1, 0, p[i] / n - 1);
      best[3] = get_s(0, n - 1, 1, p[i] % n, 1, p[i] / n + 1, n - 1);
      sort(best, best + 4);
      ans += best[0];
      add(0, n - 1, 0, p[i] / n, 1, p[i] % n, -1);
      add(0, n - 1, 1, p[i] % n, 1, p[i] / n, -1);
    }
    cout << ans << '\n';
  }
  return 0;
}
