#include<bits/stdc++.h>
using namespace std;
int n, ans = 1e9;
vector<vector<int>> v(1);
bitset<25> vis;
void dfs(int a, int b, int c){
if(c > ans)
return;
if(b == n){
ans = min(ans, v[a][1] + c);
return;
}for(int i = 2; i <= n; ++i){
if(!vis[i] and i != a){
vis.set(i);
dfs(i, b + 1, v[a][i] + c);
vis.reset(i);
}
}return;
}signed main(){
scanf("%d", &n);
for(int i = 1; i <= n; ++i){
vector<int> a(1);
for(int j = 1; j <= n; ++j){
int k;
scanf("%d", &k);
a.push_back(k);
}v.push_back(a);
}dfs(1, 1, 0);
printf("%d", ans);
return 0;
}