#include<bits/stdc++.h>
using namespace std;
const int M=505;
int n,m,s,t=1;
int nn[M][M];
struct bian
{
int a,b,w;
}k;
vector<bian>bi;
int fx[5][2]={{},{1,0},{0,1},{-1,0},{0,-1}};
int fa[M];
int v[M][M];
bool cmp(bian a,bian b)
{
return a.w<b.w;
}
int f(int x)
{
return x==fa[x]?x:(fa[x]=f(fa[x]));
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
fa[i]=i;
for(int j=1;j<=n;j++)
{
cin>>nn[i][j];
}
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<=n;j++)
{
for(int f=1;f<=4;f++)
{
k.a=i+fx[f][0],k.b=j+fx[f][1];
if(k.a<1||k.b<1||k.a>n||k.b>m||v[k.a][k.b]||v[k.b][k.a])
{
continue;
}
v[k.a][k.b]=v[k.b][k.a]=1;
k.w=abs(nn[k.a][k.b]-nn[i][j]);
bi.push_back(k);
m++;
}
}
}
sort(bi.begin(),bi.end(),cmp);
for(int i=0,x,y;i<m;i++)
{
x=f(bi[i].a),y=f(bi[i].b);
if(x==y)
{
continue;
}
fa[y]=x;
s+=bi[i].w;
t++;
if(t>=n*n/2)
{
break;
}
}
cout<<s;
return 0;
}