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

int n,dis[500*500+5];
bool on[500*500+5];

inline int getR(const int &x){
    return (x-1)/n+1;
}

inline int getC(const int &x){
    return (x-1)%n+1;
}

int main(){

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

    memset(on,1,sizeof(on));
    cin>>n;
    int mov[]={-n,1,n,-1};
    for(int i=1;i<=n*n;i++){
        dis[i]=min({getR(i)-1,n-getR(i),getC(i)-1,n-getC(i)});
    }
    int ans=0;
    for(int i=1;i<=n*n;i++){
        int cur;
        cin>>cur;
        ans+=dis[cur];
        on[cur]=0;
        deque<int> q;
        q.push_back(cur);
        while(!q.empty()){
            int x=q.front();
            q.pop_front();
            for(int dir=0;dir<4;dir++){
                int y=mov[dir]+x;
                if(y>0&&y<=n*n&&dis[y]>dis[x]+on[x]){
                    dis[y]=dis[x]+on[x];
                    if(on[x])q.push_back(y);
                    else q.push_front(y);
                }
            }
        }
    }
    cout<<ans<<endl;

    return 0;
}