#include<string.h>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<iostream>
#include<algorithm>
#define INF 1<<20
using namespace std;
int dis[12][12];
int dp[1<<11][12];
int n,ans,minx;
int main()
{
while(scanf("%d",&n)&&n)
{
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
scanf("%d",&dis[i][j]);
for(int k=0;k<=n;k++)
for(int i=0;i<=n;i++)
for(int j=0;j<=n;j++)
if(dis[i][k]+dis[k][j]<dis[i][j])
dis[i][j]=dis[i][k]+dis[k][j];
for(int State=0;State<=(1<<n)-1;++State)
for(int i=1;i<=n;++i)
{
if(State&(1<<(i-1)))
{
if(State==(1<<(i-1)))
dp[State][i]=dis[0][i];
else
{
dp[State][i]=INF;
for(int j=1;j<=n;j++)
if(State&(1<<(j-1))&&j!=i)
dp[State][i]=min(dp[State^(1<<(i-1))][j]+dis[j][i],dp[State][i]);
}
}
}
ans=dp[(1<<n)-1][1]+dis[1][0];
for(int i=2;i<=n;i++)
if(dp[(1<<n)-1][i]+dis[i][0]<ans)
{
ans=dp[(1<<n)-1][i]+dis[i][0];
}
printf("%d\n",ans);
}
return 0;
}