#include <stdio.h>
#include <vector>
#include <set>
#include <iostream>
using namespace std;
const int INF = 1000000000;
int N, M;
int A[100];
int g[100][100];
int a, b, c;
int dp[1024][20];
int main() {
cin >> N >> M;
for (int i = 0; i < M; i++) {
cin >> a >> b >> c;
g[a][b] = c;
g[b][a] = c;
}
for (int i = 0; i < (1<<N); i++) {
for (int j = 0; j < N; j++) {
dp[i][j] = INF;
}
}
dp[0][0] = 0;
for (int mask = 0; mask < (1<<N); mask++) {
for (int i = 0; i < N; i++) {
if (dp[mask][i] == INF) continue;
for (int j = 0; j < N; j++) {
if ((mask & (1 << j)) == 0) {
dp[mask | (1<<j)][j] = min(dp[mask | (1<<j)][j], dp[mask][i] + g[i][j]);
}
}
}
}
cout << dp[(1<<N)-1][0] << endl;
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxzZXQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KIAp1c2luZyBuYW1lc3BhY2Ugc3RkOwogCmNvbnN0IGludCBJTkYgPSAxMDAwMDAwMDAwOwoKaW50IE4sIE07CmludCBBWzEwMF07CmludCBnWzEwMF1bMTAwXTsKaW50IGEsIGIsIGM7CgppbnQgZHBbMTAyNF1bMjBdOwoKaW50IG1haW4oKSB7CgogICAgY2luID4+IE4gPj4gTTsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTTsgaSsrKSB7CiAgICAgICAgY2luID4+IGEgPj4gYiA+PiBjOwogICAgICAgIGdbYV1bYl0gPSBjOwogICAgICAgIGdbYl1bYV0gPSBjOwogICAgfQogICAgCiAgICBmb3IgKGludCBpID0gMDsgaSA8ICgxPDxOKTsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBOOyBqKyspIHsKICAgICAgICAgICAgZHBbaV1bal0gPSBJTkY7CiAgICAgICAgfQogICAgfQogICAgCiAgICBkcFswXVswXSA9IDA7CiAgICBmb3IgKGludCBtYXNrID0gMDsgbWFzayA8ICgxPDxOKTsgbWFzaysrKSB7CiAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICAgICAgaWYgKGRwW21hc2tdW2ldID09IElORikgY29udGludWU7CiAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgTjsgaisrKSB7CiAgICAgICAgICAgICAgICBpZiAoKG1hc2sgJiAoMSA8PCBqKSkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgIGRwW21hc2sgfCAoMTw8aildW2pdID0gbWluKGRwW21hc2sgfCAoMTw8aildW2pdLCBkcFttYXNrXVtpXSArIGdbaV1bal0pOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIAogICAgfQogICAgY291dCA8PCBkcFsoMTw8TiktMV1bMF0gPDwgZW5kbDsKICAgICAgICAKIAogICAgCiAgICByZXR1cm4gMDsKfQ==