#include<bits/stdc++.h>
using namespace std;
int n,e[16][16],dp[1<<16][16];
int ans=0x7f7f7f;
int main() {
cin>>n;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
int a;
cin>>a;
if(a) e[i][j]=a;
}
}
for(int i=0;i<=(1<<(n+1))-1;i++){
for(int j=0;j<n;j++) dp[i][j]=0x7f7f7f;
}
for(int i=0;i<n;i++) dp[0][i]=dp[1<<i][i]=0;
for(int i=2;i<=(1<<(n+1))-1;i++){
for(int j=0;j<n;j++){
if((1<<j)&i==0) continue;
for(int k=0;k<n;k++){
if(j==k||(1<<k)&i==0) continue;
if(e[k][j]) dp[i][j]=min(dp[i][j],dp[i-(1<<j)][k]+e[k][j]);
}
}
}
for(int i=1;i<n;i++){
if(e[i][0]) ans=min(ans,dp[(1<<(n+1))-1][i]+e[i][0]);
}
if(ans==0x7f7f7f) cout<<-1;
else cout<<ans;
return 0;
}