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

typedef long long ll;

int n;
ll dist[502][502];
bool used[502][502];

ll cnt[502][502]={};
void upd(int x,int y,int z){
	if(!used[x][y])z++;
	if(dist[x][y]<=z)return;
	//cnt[x][y]++;
	//if(x==40&&y==40)cerr<<dist[x][y]<<" "<<z<<endl;
	dist[x][y]=z;
	if(x>0)upd(x-1,y,z);
	if(x<n-1)upd(x+1,y,z);
	if(y>0)upd(x,y-1,z);
	if(y<n-1)upd(x,y+1,z);
}

int main(){
	static int p[250010];
	scanf("%d",&n);
	for(int i=0;i<n*n;i++)scanf("%d",&p[i]);
	//n=500;
	//for(int i=0;i<n*n;i++)p[i]=i+1;
	//random_shuffle(p,p+(n*n));
	for(int i=0;i<n;i++)for(int j=0;j<n;j++){
		dist[i][j]=100000;
		used[i][j]=false;
	}
	for(int i=0;i<n;i++)for(int j=0;j<n;j++){
		dist[i][j]=1+min(min(i,n-1-i),min(j,n-1-j));
	}
	
	ll ret=0;
	for(int i=0;i<n*n;i++){
		int x=(p[i]-1)/n;
		int y=(p[i]-1)%n;
		ret+=dist[x][y]-1;
		used[x][y]=true;
		upd(x,y,dist[x][y]-1);
		//cerr<<i<<" "<<ret<<endl;
	}
	/*for(int x=0;x<n;x++)for(int y=0;y<n;y++){
		cerr<<cnt[x][y]<<endl;
	}*/
	cout<<ret<<endl;
}

