import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) throws Exception { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] d = new int[n][n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { d[i][j] = sc.nextInt(); } } sc.close(); int inf = 1000000000; int n2 = 1 << n; int[][] dp = new int[n2][n]; int[][] dp2 = new int[n2][n]; for (int i = 0; i < n2; i++) { Arrays.fill(dp[i], inf); Arrays.fill(dp2[i], inf); } dp[1][0] = 0; dp2[1][0] = 0; for (int i = 1; i < n2; i++) { for (int j = 0; j < n; j++) { if ((i >> j & 1) == 1 && dp[i][j] < inf) { for (int j2 = 0; j2 < n; j2++) { if ((i >> j2 & 1) == 0) { int ni = i | (1 << j2); dp[ni][j2] = Math.min(dp[ni][j2], dp[i][j] + d[j][j2]); dp2[ni][j2] = Math.min(dp2[ni][j2], dp2[i][j] + dp[ni][j2]); } } } } } int ans = inf; for (int i = 0; i < n; i++) { ans = Math.min(ans, dp2[n2 - 1][i]); } System.out.println(ans); } }