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

#define int long long
#define pb push_back
#define ins insert
#define pii pair<int,int>
#define fs first
#define sc second
#define mpr make_pair
#define iter iterator
#define all(X) X.begin(),X.end()
#define sau(X) sort(all(X)),X.resize(unique(all(X))-X.begin())
#define exist(X,ele) binary_search(all(X),ele)
#define y0 I_love_Ryougi_Shiki_0
#define y1 I_love_Ryougi_Shiki_1

template<typename T1,typename T2>
ostream& operator << (ostream& out,const pair<T1,T2>& X)
{
	out<<"{"<<X.fs<<","<<X.sc<<"}";
	return out;
}

template<typename T>
ostream& operator << (ostream& out,const vector<T>& X)
{
	for(auto i:X) out<<i<<" ";
	return out;
}

template<typename T>
inline void cmin(T& x,T y)
{
	if(!(x<y)) x=y;
}

template<typename T>
inline void cmax(T& x,T y)
{
	if(x<y) x=y;
}

const int inf=5000000000000000ll;
const int dx[]={1,0,-1,0};
const int dy[]={0,1,0,-1};

int N;
int px[555],py[555];
bool a[555][555];
int d[555][555];

bool vis[555][555];
vector<pii> vq;

void upd(int x,int y)
{
	vector<bool> to(4,false);
	for(int RDi=0;RDi<4;RDi++)
	{
		int nx=x+dx[RDi],ny=y+dy[RDi];
		if(nx<0 || nx>=N || ny<0 || ny>=N) continue;
		
		if(d[nx][ny]>d[x][y]+a[nx][ny])
		{
			d[nx][ny]=d[x][y]+a[nx][ny];
			to[RDi]=true;
		}
	}
	for(int RDi=0;RDi<4;RDi++)
	{
		int nx=x+dx[RDi],ny=y+dy[RDi];
		if(nx<0 || nx>=N || ny<0 || ny>=N) continue;
		
		if(!to[RDi] || vis[nx][ny]) continue;
		vis[nx][ny]=true;
		vq.pb(mpr(nx,ny));
		upd(nx,ny);
	}
}

main()
{
	ios::sync_with_stdio(false);
	
	cin>>N;
	for(int i=0;i<N*N;i++)
	{
		int t; cin>>t;
		px[i]=(t-1)/N;
		py[i]=(t-1)%N;
	}
	for(int i=0;i<N;i++)
	{
		for(int j=0;j<N;j++)
		{
			a[i][j]=true;
			d[i][j]=min(min(i,j),min(N-1-i,N-1-j))+1;
		}
	}
	int ans=0;
	for(int t=0;t<N*N;t++)
	{
		int x=px[t],y=py[t];
		ans+=d[x][y]-1;
		
		d[x][y]--;
		a[x][y]=false;
		vis[x][y]=true;
		vq.pb(mpr(x,y));
		upd(x,y);
		for(auto i:vq) vis[i.fs][i.sc]=false;
		vq.clear();
		
//		cout<<"{"<<x<<","<<y<<"} "<<ans<<endl;
//		for(int i=0;i<N;i++)
//		{
//			for(int j=0;j<N;j++)
//			{
//				cout<<d[i][j]<<" ";
//			}
//			cout<<endl;
//		}
//		cout<<endl;
	}
	cout<<ans<<endl;
	
	return 0;
}




















