import numpy as np

def main():
    N = int(input())
    A = list(map(int, input().split()))

    # 観客がいる場合は1、いない場合は0
    # 行数、列数は最大でも500なので、int16で十分
    flag_row = np.ones((N, N), dtype=np.int16)
    flag_col = np.ones((N, N), dtype=np.int16)

    ans = 0
    for a in A:
        row, col = (a - 1) // N, (a - 1) % N
        # 退席する観客の行、列にいる観客の情報
        fr = flag_row[row]
        fc = flag_col[col]
        # 自分は退席するのでフラグを消す
        fr[col] = 0
        fc[row] = 0
        # 上下左右それぞれに退席するときの人数を計算し、最小値を選択
        sum_left   = fr[:col].sum()
        sum_right  = fr[col+1:].sum()
        sum_up     = fc[:row].sum()
        sum_bottom = fc[row+1:].sum()

        ans += min(sum_left, sum_right, sum_up, sum_bottom)

    print(ans)


if __name__ == '__main__':
    main()