#include<bits/stdc++.h>
#define rep(i,j,k) for(int i=j;i<=k;i++)
using namespace std;
const int dir[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
template<typename T> void read(T &num){
	char c=getchar();T f=1;num=0;
	while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
	while(c>='0'&&c<='9'){num=(num<<3)+(num<<1)+(c^48);c=getchar();}
	num*=f;
}
template<typename T> void qwq(T x){
	if(x>9)qwq(x/10);
	putchar(x%10+'0');
}
template<typename T> void write(T x){
	if(x<0){x=-x;putchar('-');}
	qwq(x);putchar('\n');
}
int n;
int d[510][510];bool del[510][510];int p[250010]; 
inline void dfs(int x,int y,int k){
	rep(i,0,3){
		int tx=x+dir[i][0];int ty=y+dir[i][1];
		if(tx<1||ty<1||tx>n||ty>n||k>=d[tx][ty])continue;
		d[tx][ty]=k;
		dfs(tx,ty,k+(del[tx][ty]==0));
	}
	return;
}

int main(){
	read(n);
	rep(i,1,n*n)read(p[i]);
	rep(i,1,n){
		rep(j,1,n)d[i][j]=min(min(i,n+1-i),min(j,n+1-j))-1;
	}
	
	int ans=0; 
	rep(i,1,n*n){
		int n1=(p[i]/n)+(p[i]%n!=0);int n2=p[i]-n*(n1-1);
		ans+=d[n1][n2];del[n1][n2]=1;dfs(n1,n2,d[n1][n2]);
	}
	write(ans);
	return 0;
}
