#include <bits/stdc++.h>
using namespace std;
const int N = 21;
int f[1 << N][N];
int a[N][N];
signed main()
{
int n;
cin >> n;
for (int i = 0; i < n; i ++)
for (int j = 0; j < n; j ++)
cin >> a[i][j];
memset (f, 0x3f, sizeof f);
f[1][0] = 0;
for (int mask = 1; mask < (1 << n); mask ++)
for (int i = 0; i < n; i ++)
if (mask & (1 << i))
for (int j = 0; j < n; j ++)
if (~mask & (1 << j))
f[mask | (1 << j)][j] = min(f[mask | (1 << j)][j], f[mask][i] + a[i][j]);
int mi = 0x3f3f3f3f;
cout << f[(1 << n) - 1][n - 1] << '\n';
return 0;
}