#include <bits/stdc++.h>
using namespace std;

#define rep(i, n) for(int i=0; i<n; ++i)
#define repit(it, li) for(auto it=li.begin(); it!=li.end(); it++)
#define ll long long int

int main(){
	int n;
	cin>>n;
	int nn=n*n;
	int p[250000];
	rep(i, nn){
		cin>>p[i]; p[i]--;
	}

	bool sit[250000];
	rep(i, nn) sit[i]=true;
	int d[250000];
	rep(i, n) rep(j, n){
		d[i*n+j]=min(min(i, n-1-i), min(j, n-1-j));
	}

	unordered_map<int, bool> rem;
	int dx[]={0, 0, -1, 1};
	int dy[]={-1, 1, 0, 0};

	int ans=0;
	rep(k, nn){
		int xy=p[k];
		int x=xy/n, y=xy%n;
		ans+=d[xy];

		sit[xy]=false;
		rem[xy]=true;
		while(!rem.empty()){
			auto it=rem.begin();
			int tx=it->first/n, ty=it->first%n;
			rem.erase(it);

			int nd=(sit[tx*n+ty])?(d[tx*n+ty]+1):d[tx*n+ty];
			rep(i, 4){
				int nx=tx+dx[i], ny=ty+dy[i];
				if(nx>=0 && nx<n && ny>=0 && ny<n){
					if(nd<d[nx*n+ny]){
						d[nx*n+ny]=nd;
						rem[nx*n+ny]=true;
					}
				}
			}
		}


	}

	cout << ans << endl;
	return 0;
}
