#include<bits/stdc++.h>
using namespace std;
struct line{
int to,pre,w;
};
line b[1000];
int head[1000];
int B,A,K,k,ans,sa,h=1;
bool vis[1000];
void adg(int x,int y,int w){
k++;
b[k].pre=head[x];
b[k].to=y;
head[x]=k;
b[k].w=w;
}
void dfs(int x){
if(h==B){
if(!ans)ans=sa;
else if(sa<ans)ans=sa;
}
for(int i=head[x];i;i=b[i].pre){
int y=b[i].to;
if(vis[y]) continue;
vis[y]=1;
int u=b[i].w;
if(u>A)continue;
sa+=u;
h++;
dfs(y);
vis[y]=0;
sa-=u;
h--;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>A>>B;
for(int i=1;i<=B;i++){
for(int j=1;j<=B;j++){
cin>>K;
if(K){
adg(i,j,K);
adg(j,i,K);
}
}
}
for(int i=1;i<=B;i++){
dfs(i);
}
ans+=A;
cout<<ans;
return 0;
}