#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
using namespace std;
int n;
int dis[510][510];
int c[510][510];
queue<pair<int,int> >q;
bool vis[510][510];
const int dx[]={1,-1,0,0};
const int dy[]={0,0,1,-1};
void work(int x,int y)
{
	dis[x][y]--;c[x][y]=0;
	q.push(make_pair(x,y));
	vis[x][y]=true;
	while(!q.empty())
	{
		x=q.front().first;
		y=q.front().second;
		q.pop();vis[x][y]=false;
		for(int i=0;i<4;i++)
		{
			int tx=x+dx[i];
			int ty=y+dy[i];
			if(tx<=0||tx>n)continue;
			if(ty<=0||ty>n)continue;
			if(dis[x][y]+c[tx][ty]<dis[tx][ty])
			{
				dis[tx][ty]=dis[x][y]+c[tx][ty];
				if(!vis[tx][ty]){
					vis[tx][ty]=true;
					q.push(make_pair(tx,ty));
				}
			}
		}
	}
	return ;
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
		{
			dis[i][j]=min(min(i,n-i+1),min(j,n-j+1));
			c[i][j]=1;
		}
	int ans=0;
	for(int i=1;i<=n*n;i++)
	{
		int p;scanf("%d",&p);p--;
		int x=p/n+1;
		int y=p%n+1;
		work(x,y);
		ans+=dis[x][y];
	}
	printf("%d\n",ans);
	return 0;
}