#include<bits/stdc++.h>
#define ll long long
#define lld long double
using namespace std;
template<typename tn> void read(tn &a){
	tn x=0,f=1; char c=' ';
	for(;!isdigit(c);c=getchar()) if(c=='-') f=-1;
	for(;isdigit(c);c=getchar()) x=x*10+c-'0';
	a=x*f;
}
const int N = 610;
const int dx[]={0,1,0,-1},dy[]={1,0,-1,0};
int px[N*N],py[N*N],f[N][N],n,in[N][N];
void solve(int x,int y){
	for(int k=0;k<4;k++){
		int tx=x+dx[k],ty=y+dy[k];
		if(tx<1||ty<1||tx>n||ty>n) continue;
		if(f[x][y]+in[x][y]<f[tx][ty]){
			f[tx][ty]=f[x][y]+in[x][y];
			solve(tx,ty);
		}
	}
}
int main(){
	read(n);
	for(int i=1;i<=n*n;i++){
		int x;read(x);
		px[i]=(x-1)/n+1;
		py[i]=(x-1)%n+1;
	}
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			f[i][j]=min(i-1,min(n-i,min(j-1,n-j))),in[i][j]=1;
	ll ans=0;
	for(int i=1;i<=n*n;i++){
		ans+=f[px[i]][py[i]];
		in[px[i]][py[i]]=0;
		for(int k=0;k<4;k++){
			int tx=px[i]+dx[k],ty=py[i]+dy[k];
			if(tx<1||ty<1||tx>n||ty>n) continue;
			if(f[px[i]][py[i]]<f[tx][ty]){
				f[tx][ty]=f[px[i]][py[i]];
				solve(tx,ty);
			}
		}
	}
	cout<<ans<<'\n';
	return 0;
}

