using namespace std;
int F[1 << 15][15], Mx[15][1 << 15], Sm[1 << 15], B[15][15], Tmp[15], n, m;
vector <int> hsh[1 << 15];
void cmax(int& x, int y) {if(x < y) x = y;}
int main()
{
scanf("%d%d", &n, &m), memset(B, -1, sizeof B);
for(int i = 1; i <= m; i++) {
int a, b, c;
scanf("%d%d%d", &a, &b, &c), a--, b--;
B[a][b] = B[b][a] = c;
}
memset(Mx, -1, sizeof Mx), memset(F, 200, sizeof F);
for(int i = 0; i < (1 << n); i++)
for(int j = 0; j < n; j++) if(i >> j & 1) hsh[i].push_back(j);
for(int i = 0; i < (1 << n); i++)
for(int j = 0; j < n; j++) if(i >> j & 1)
for(int k = j + 1; k < n; k++) if((i >> k & 1) && B[j][k] != -1) Sm[i] += B[j][k];
for(int i = 0; i < n; i++)
for(int j = 1; j < (1 << n); j++)
for(int k = 0; k < n; k++) if(j >> k & 1) {
Mx[i][j] = max(B[i][k], Mx[i][j - (1 << k)]);
break;
}
for(int i = 1; i < (1 << n); i += 2) F[i][0] = Sm[i];
for(int i = 1; i < (1 << n); i += 2) {
memset(Tmp, 200, sizeof Tmp);
for(int j = 0; j < n; j++) if(F[i][j] >= 0)
for(int k = 0; k < n; k++) if(B[j][k] != -1)
cmax(Tmp[k], F[i][j] + B[j][k]);
for(int s = (1 << n) - i - 1, j = s; j; j = (j - 1) & s)
for(int k = 0; k < hsh[j].size(); k++)
cmax(F[i + j][hsh[j][k]], Tmp[hsh[j][k]] + Sm[j]);
}
printf("%d\n", Sm[(1 << n) - 1] - F[(1 << n) - 1][n - 1]);
return 0;
}