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

//#define int           long long
#define S             second
#define F             first
#define pb            push_back
#define all(c)        (c).begin(),(c).end()
#define rall(c)       (c).rbegin(),(c).rend() 
#define lb            lower_bound
#define si(c)         (int)((c).size())
#define lcm(a, b)      (a * (b / __gcd(a,b)))  
#define inf           (int)(9e18)
#define endl          '\n'
#define mp            make_pair
#define time(s)       (double(clock()-s)/double(CLOCKS_PER_SEC))
#define debug(args...)    _F(#args, args)
#define vi            std::vector<int>
#define pii           pair<int, int> 
#define vpi           vector<pii >

clock_t start;
mt19937_64 rng(chrono::system_clock::now().time_since_epoch().count());

template<typename T> void _F(const char *name, T arg1){
    cerr << name << " = " << arg1 << endl;
}
template<typename T, typename... Args> void _F(const char *names, T arg1, Args... args){
    const char *name = strchr(names, ',');cerr.write(names, name-names) << " = " << arg1 << endl;_F(name+2, args...);
}
template<typename T1, typename T2> istream& operator>>(istream& in, pair<T1, T2> &q){ 
    in >> q.F >> q.S; return in;
}
template<typename T1, typename T2> ostream& operator<<(ostream& out, pair<T1, T2> &q){
    out << q.F << " " << q.S; return out;
}
template< typename T1, typename T2> pair<T1, T2> operator+(pair<T1, T2> p1, pair<T1, T2> p2){
    return {p1.F+p2.F, p1.S+p2.S};
}
template< typename T1, typename T2> pair<T1, T2> operator-(pair<T1, T2> p1, pair<T1, T2> p2){
    return {p1.F-p2.F, p1.S-p2.S};
}

void solve() {
    int n;
    cin >> n;
    int p[n*n+1];
    for(int i = 1; i <= n*n; i++)
        cin >> p[i];
    int ans[n+3][n+3];
    bool vis[n+3][n+3];
    memset(vis, 0, sizeof(vis));
    memset(ans, 0, sizeof(ans));
    for(int i = 1; i <= n; i++){
        for(int j = 1; j <= n; j++){
            ans[i][j] = min({i-1, j-1, n-i, n-j});
        }

    }
    int cnt = 0;
    for(int i = 1; i <= n*n; i++){
        int ii = p[i]/n+(p[i]%n > 0);
        int jj = p[i]%n;
        if(jj == 0)jj = n;
        cnt += ans[ii][jj];
        //cout << ans[ii][jj] << endl;
        vis[ii][jj] = 1;
        queue<pii> q;
        q.push(mp(ii, jj));
        ans[ii][jj]--;
        while(!q.empty()){
            int curi = q.front().F;
            int curj = q.front().S;
            q.pop();
            if(curj+1 <= n && ans[curi][curj+1] > ans[curi][curj]+!vis[curi][curj+1]){
                ans[curi][curj+1] = ans[curi][curj]+!vis[curi][curj+1];
                q.push({curi, curj+1});
            }
            if(curj-1 > 0 && ans[curi][curj-1] > ans[curi][curj]+!vis[curi][curj-1]){
                ans[curi][curj-1] = ans[curi][curj]+!vis[curi][curj-1];
                q.push({curi, curj-1});
            }
            if(curi+1 <= n && ans[curi+1][curj] > ans[curi][curj]+!vis[curi+1][curj]){
                ans[curi+1][curj] = ans[curi][curj]+!vis[curi+1][curj];
                q.push({curi+1, curj});
            }
            if(curi-1 > 0 && ans[curi-1][curj] > ans[curi][curj]+!vis[curi-1][curj]){
                ans[curi-1][curj] = ans[curi][curj]+!vis[curi-1][curj];
                q.push({curi-1, curj});
            }
        }
    }
    cout << cnt << endl;
}

signed main(){

    ios_base::sync_with_stdio(0); 
    cin.tie(0); cout.tie(0);   

    int t = 1;
    start = clock(); 

    cout << fixed << setprecision(20);

  
   
    //cin >> t;
    
    for(int i = 1; i <= t; ++i){
        //cout << "Case #" << i << ": "; 
        solve();
        //cout << endl;
    }
    //cerr << time(start);
    return 0;
}


Measured memory_bytes: 5884