#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
#define ll long long
#define gmax(x,y) x=max(x,y)
#define gmin(x,y) x=min(x,y)
#define F first
#define S second
#define P pair
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define rep(i,a,b) for(int i=a;i<b;i++)
#define V vector
#define RE return
#define ALL(a) a.begin(),a.end()
#define MP make_pair
#define PB emplace_back
#define PF emplace_front
#define FILL(a,b) memset(a,b,sizeof(a))
#define lwb lower_bound
#define upb upper_bound
using namespace std;
int ans[505][505],c[505][505];
int fx[4][2]={
0,1,
1,0,
-1,0,
0,-1
};
int n;
void dfs(int x,int y){
	rep(i,0,4){
		int tx=x+fx[i][0],ty=y+fx[i][1];
		if(tx&&ty&&tx<=n&&ty<=n){
			if(ans[tx][ty]>ans[x][y]+c[tx][ty]){
				ans[tx][ty]=ans[x][y]+c[tx][ty];
				dfs(tx,ty);
			}
		}
	}
} 
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cin>>n;
	FOR(i,1,n){
		FOR(j,1,n){
			c[i][j]=1;
			ans[i][j]=min(min(i,j),min(n-i+1,n-j+1));
		}
	}
	int x,y,t,sum=0;
	FOR(i,1,n*n){
		cin>>t;
		x=(t-1)/n+1;
		y=(t-1)%n+1;
		sum+=--ans[x][y];c[x][y]=0;
		dfs(x,y);
	}
	cout<<sum;
	RE 0;
}


