#include<cstdio>
#include<algorithm>
#include<cstring>
#include<queue>
using namespace std;
const int dx[4]={1,-1,0,0};
const int dy[4]={0,0,1,-1};
int n,dis[505][505],ans;
bool flag[505][505];
queue<int>qx,qy;
void bfs(int x,int y)
{
	dis[x][y]--;
	flag[x][y]=0;
	qx.push(x);
	qy.push(y);
	while(!qx.empty())
	{
		int x=qx.front();
		int y=qy.front();
		qx.pop();
		qy.pop();
		for(int k=0;k<4;k++)
		{
			int xx=x+dx[k];
			int yy=y+dy[k];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&dis[xx][yy]>dis[x][y]+flag[xx][yy])
			{
				dis[xx][yy]=dis[x][y]+flag[xx][yy];
				qx.push(xx);
				qy.push(yy);
			}
		}
	}
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	  for(int j=1;j<=n;j++)
	    flag[i][j]=1,dis[i][j]=min(min(i,n-i+1),min(j,n-j+1));
	for(int i=1;i<=n*n;i++)
	{
		int x,y;
		scanf("%d",&x);
		y=(x-1)%n+1;
		x=(x-1)/n+1;
		ans+=dis[x][y]-1;
		bfs(x,y);
	}
	printf("%d\n",ans);
	return 0;
}