#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a > b) swap(a, b);
  if (a == 0) return b;
  return gcd(b % a, a);
}
bool mod(long double a, long double b) { return a / b - floor(a / b); }
struct bit {
  long long n;
  vector<long long> B;
  void began(long long a) {
    n = a + 1;
    long long i;
    for (i = 0; i < n + 5; i++) {
      B.push_back(0);
    }
  }
  void update(long long p, long long val) {
    while (p <= n) {
      B[p] += val;
      p += p & (-p);
    }
  }
  long long sum(long long p) {
    long long s = 0;
    if (p == 0) return 0;
    while (p > 0) {
      s += B[p];
      p -= p & (-p);
    }
    return s;
  }
};
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long i, j, first, t, n, m, a, b, c;
  cin >> n;
  bit row[n + 1], col[n + 1];
  for (i = 1; i < n + 1; i++) {
    row[i].began(n + 1);
    for (j = 1; j < n + 1; j++) row[i].update(j, 1);
    col[i].began(n + 1);
    for (j = 1; j < n + 1; j++) col[i].update(j, 1);
  }
  long long ans = 0;
  for (i = 0; i < n * n; i++) {
    cin >> first;
    a = (first - 1) / n + 1;
    b = (first - 1) % n + 1;
    long long a1, b1;
    a1 = row[a].sum(b - 1);
    b1 = col[b].sum(a - 1);
    long long c1, d1;
    c1 = row[a].sum(n) - a1 - 1;
    d1 = col[b].sum(n) - b1 - 1;
    ans += min({a1, b1, c1, d1});
    row[a].update(b, -1);
    col[b].update(a, -1);
  }
  cout << ans << '\n';
  return 0;
}
