
"""

外周への最小距離を求める
O(1)かlogぐらいで1人求められる必要がある

逆に座っていく？
座ったことにより、距離を伸ばしてしまったら+1
外周との最短距離とは何か？

普通はbfsで求められる
あるやつからあるやつへの最短経路を維持して置いて操作する？
最短の方向に矢印
抜けるたび最短を更新？

"""
from collections import deque
N = int(input())
lis = [[0]*N for i in range(N)]
exsist = [ [1] * N for i in range(N) ] 

for i in range(N):
    for j in range(N):

        lis[i][j] = min(i,j,N-1-i,N-1-j)

P = list(map(int,input().split()))
ans = 0
q = deque([])

for loop in range(N**2):

    ni = (P[loop]-1)//N
    nj = (P[loop]-1)% N

    ans += lis[ni][nj]
    exsist[ni][nj] = 0

    q.append((ni,nj))

    while len(q) > 0:

        now = q.popleft()
        i,j = now

        if i != 0 and lis[i-1][j] > lis[i][j] + exsist[i][j]:
            lis[i-1][j] = lis[i][j] + exsist[i][j]
            q.append((i-1,j))
        if i != N-1 and lis[i+1][j] > lis[i][j] + exsist[i][j]:
            lis[i+1][j] = lis[i][j] + exsist[i][j]
            q.append((i+1,j))
        if j != 0 and lis[i][j-1] > lis[i][j] + exsist[i][j]:
            lis[i][j-1] = lis[i][j] + exsist[i][j]
            q.append((i,j-1))
        if j != N-1 and lis[i][j+1] > lis[i][j] + exsist[i][j]:
            lis[i][j+1] = lis[i][j] + exsist[i][j]
            q.append((i,j+1))

print (ans)
        
        

        