#include <stdio.h>

int c[25][25];
int dp[(1<<20)+5];

int main(){
    int N, K;
    scanf("%d%d", &N, &K);
    for(int i=0; i<N; i++) for(int j=0; j<N; j++) scanf("%d", &c[i][j]);
    for(int i=1; i<(1<<N); i++) dp[i] = 2e9;
    int res = 2e9;
    for(int mask=0; mask<(1<<N); mask++){
        int bcnt = __builtin_popcount(mask);
        if(N-bcnt <= K && dp[mask] < res) res = dp[mask];
        for(int i=0; i<N; i++){
            if(mask&(1<<i)) continue;
            int newbit = mask|(1<<i);
            int cost = 2e5;
            for(int j=0; j<N; j++){
                if((mask&(1<<j)) || j == i) continue;
                if(c[i][j] < cost) cost = c[i][j];
            }
            if(dp[mask]+cost < dp[newbit]) dp[newbit] = dp[mask]+cost;
        }
    }
    printf("%d", res);
    return 0;
}