#include<bits/stdc++.h>
#define ll long long
using namespace std;
int n,m,k,h,t;
int dp[505][505];
bool vis[505][505];
ll ans;
struct node{
	int x,y;
};
node q[505*505];
bool b[505*505];
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	dp[i][j]=min({i-1,j-1,n-i,n-j}),vis[i][j]=1;
	for(int i=1;i<=n*n;i++){
		cin>>k;
		int x=(k-1)/n+1,y=(k-1)%n+1; 
		ans+=dp[x][y];vis[x][y]=0;
		h=0;q[t=1]={x,y};
		while(h<t){
			node u=q[++h];
			if(u.x>1&&dp[u.x-1][u.y]>dp[u.x][u.y]+vis[u.x][u.y])
			dp[u.x-1][u.y]=dp[u.x][u.y]+vis[u.x][u.y],q[++t]={u.x-1,u.y};

			if(u.x<n&&dp[u.x+1][u.y]>dp[u.x][u.y]+vis[u.x][u.y])
			dp[u.x+1][u.y]=dp[u.x][u.y]+vis[u.x][u.y],q[++t]={u.x+1,u.y};

			if(u.y>1&&dp[u.x][u.y-1]>dp[u.x][u.y]+vis[u.x][u.y])
			dp[u.x][u.y-1]=dp[u.x][u.y]+vis[u.x][u.y],q[++t]={u.x,u.y-1};
			
			if(u.y<n&&dp[u.x][u.y+1]>dp[u.x][u.y]+vis[u.x][u.y])
			dp[u.x][u.y+1]=dp[u.x][u.y]+vis[u.x][u.y],q[++t]={u.x,u.y+1};
		}
	}
	cout<<ans;
    return 0;
}






