INF = 10**18 N = int(input()) graph = [[int(x) for x in input().split()] for _ in range(N)] for k in range(N): for i in range(N): for j in range(N): graph[i][j] = min(graph[i][j], graph[i][k] + graph[k][j]) dp = [[INF] * N for _ in range(1 << N)] dp[1][0] = 0 for bit in range(1 << N): for i in range(N): if (bit >> i) & 1 == 0: continue for j in range(N): if (bit >> j) & 1 == 1: continue next_bit = bit | (1 << j) dp[next_bit][j] = min(dp[next_bit][j], dp[bit][i] + graph[i][j] * (N - bit.bit_count())) print(min(dp[-1]))