#include<bits/stdc++.h>
using namespace std;

long long n,p[250005],dist[505][505],ans,x,y;
bool lib[505][505];
pair<int,int> dir[4]={{1,0},{-1,0},{0,1},{0,-1}};

void dfs(int row,int col,int val){
	
	if(lib[row][col]==false)val++;
	
	for(int i=0;i<4;i++){
		if((row+dir[i].first)>=0 && (row+dir[i].first)<n && (col+dir[i].second)>=0 && (col+dir[i].second)<n 
		&& dist[(row+dir[i].first)][(col+dir[i].second)]>val){
			dist[(row+dir[i].first)][(col+dir[i].second)]=val;
			dfs((row+dir[i].first),(col+dir[i].second),val);
		}
	}
	
}

int main(){

	ios::sync_with_stdio(false);
	cin.tie(0);

	cin>>n;
	
	for(int i=0;i<(n*n);i++){
		cin>>p[i];
		p[i]--;
	}
	
	for(long long i=0;i<n;i++){
		for(long long j=0;j<n;j++){
			dist[i][j]=min({i,n-1-i,j,n-1-j});
		}
	}
	
	for(int i=0;i<(n*n);i++){
		x=p[i]/n;
		y=p[i]%n;
		
		//cout<<"aggiungo "<<dist[x][y]<<"\n";
		
		ans+=dist[x][y];
		lib[x][y]=true;
		
		dfs(x,y,dist[x][y]);
	}
	
	cout<<ans<<"\n";

return 0;
}
