#include <bits/stdc++.h>
using namespace std;
int N;
int update_ob(set<int> &ob, set<int> &ao) {
  set<int> d;
  array<int, 4> def = {-N, -1, 1, N};
  for (auto i : ao) {
    if (ob.find(i) != ob.end()) {
      d.insert(i);
      ob.insert(i);
      for (auto k : def) ob.insert(i + k);
    }
  }
  for (auto i : d) ao.erase(i);
  return ao.size();
}
int main(void) {
  scanf("%d", &N);
  int pN = N * N;
  vector<int> P(pN);
  int count = 0, i, size;
  set<int> ob, ao, cob, cao, ccao;
  for (i = 0; i < pN; i++) {
    scanf("%d", &P[i]);
    P[i]--;
    if (i < N)
      ob.insert(i);
    else if (i % N == 0)
      ob.insert(i);
    else if (i % N == N - 1)
      ob.insert(i);
    else if (i + N > pN)
      ob.insert(i);
  }
  for (auto i : P) {
    do {
      size = ao.size();
    } while (size != update_ob(ob, ao));
    if (ob.find(i) != ob.end()) {
      cao.clear();
      cao.insert(i);
      update_ob(ob, cao);
    } else {
      cob = ob;
      ccao = ao;
      do {
        cao = cob;
        count++;
        update_ob(cob, cao);
        do {
          size = ccao.size();
        } while (size != update_ob(cob, ccao));
      } while (cob.find(i) == cob.end());
    }
    ao.insert(i);
  }
  printf("%d", count);
  return 0;
}
