#include<bits/stdc++.h>
using namespace std;
int n,mp[16][16],vis[16],ans=10000;
void dfs(int dep,int dis,int last){
if(dep>n){
ans=min(ans,dis+mp[last][1]);
return ;
}
else{
for(int i=2;i<=n;i++){
if(vis[i]==0&&dis+mp[last][i]<ans){
vis[i]=1;
dfs(dep+1,dis+mp[last][i],i);
vis[i]=0;
}
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n;j++){
cin>>mp[i][j];
}
}
vis[1]=1;
dfs(2,0,1);
cout<<ans;
return 0;
}