#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=555;
int p[N*N];
int n;
int dis[N*N];
bool e[N*N];
int main(){
	memset(e,true,sizeof(e));
	cin>>n;
	for(int i=1;i<=n*n;i++){
		cin>>p[i];
	}
	for(int i=1;i<=n*n;i++){
		int xx=(i-1)/n+1,yy=(i-1)%n+1;
		dis[i]=min(min(n-xx,xx-1),min(n-yy,yy-1));
	}
	LL ans=0;
	for(int i=1;i<=n*n;i++){
		int x=p[i];
		ans+=dis[x];
		e[x]=false;
		queue<int> q;
	#define UPD(X,D) {\
		int disw=(D);\
		int idw=(X);\
		if(disw<dis[idw]){\
			dis[idw]=disw;\
			q.push(idw);\
		}\
		}
		q.push(x);
		while(!q.empty()){
			int x=q.front();
			q.pop();
			int d=dis[x]+(e[x]?1:0);
			int xx=(x-1)/n+1,yy=(x-1)%n+1;
			if(xx>1){
				UPD(x-n,d);
			}
			if(xx<n){
				UPD(x+n,d);
			}
			if(yy>1){
				UPD(x-1,d);
			}
			if(yy<n){
				UPD(x+1,d);
			}
		}
	}
	cout<<ans<<endl;
	return 0;
}