#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
int dis[1001][1001],n,p[1000001],dxy[4][2]={{0,-1},{-1,0},{0,1},{1,0}};bool vis[1001][1001];
void dfs(int r,int c)
{
	for(int i=0;i<4;++i)
	{
		int nx=r+dxy[i][0],ny=c+dxy[i][1];if(nx<=0||ny<=0||nx>n||ny>n||dis[nx][ny]<=dis[r][c]+!vis[r][c])continue;
		dis[nx][ny]=dis[r][c]+!vis[r][c];dfs(nx,ny);
	}
}
int main()
{
	scanf("%d",&n);for(int i=1;i<=n*n;++i)scanf("%d",p+i);
	for(int i=1,r=(i-1)/n+1,c=(i-1)%n+1;i<=n*n;++i,r=(i-1)/n+1,c=(i-1)%n+1)dis[r][c]=min(min(min(r-1,n-r),c-1),n-c);
	long long ans=0;
	for(int i=1;i<=n*n;++i)
	{
		int r=(p[i]-1)/n+1,c=(p[i]-1)%n+1;vis[r][c]=true;ans+=dis[r][c];
		dfs(r,c);
	}
	printf("%lld\n",ans);return 0;
}