#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int> > darr({{-1,0},{1,0},{0,-1},{0,1}});
int n,dp[505][505];
bool del[505][505];
void dfs(int x,int y)
{
	int tmp=dp[x][y];
	for (auto p:darr)
	{
		int nx=x+p.first,ny=y+p.second;
		tmp=min(tmp,dp[nx][ny]+!del[x][y]);
	}
	if (tmp<dp[x][y])
	{
		dp[x][y]=tmp;
		for (auto p:darr)
		{
			int nx=x+p.first,ny=y+p.second;
			if (nx>0 && nx<=n && ny>0 && ny<=n)
			dfs(nx,ny);
		}
	}
}
int main()
{
	scanf("%d",&n);
	for (int i=1;i<=n;i++)
	{
		for (int j=1;j<=n;j++)
		dp[i][j]=min(min(i,n-i+1),min(j,n-j+1));
	}
	int ans=0;
	for (int i=1;i<=n*n;i++)
	{
		int a;
		scanf("%d",&a);
		a--;
		int x=a/n+1,y=a%n+1;
		del[x][y]=1;
		dfs(x,y);
		ans+=dp[x][y];
	}
	printf("%d",ans);
}