#include <fstream>
#include <vector>
using namespace std;
const int INF = 1e8;
int main()
{
ifstream in("hamilton.in");
ofstream out("hamilton.out");
int n, m;
in >> n >> m;
vector <vector <int>> c(n);
for (int i = 0; i < n; i++)
{
c[i].resize(n, INF);
}
vector <vector <int>> dp(1 << n);
for (int s = 0; s < (1 << n); s++)
{
dp[s].resize(n, INF);
}
for (int i = 0; i < m; i++)
{
int x, y;
in >> x >> y;
in >> c[x][y];
}
dp[1][0] = 0;
for (int s = 3; s < (1 << n); s += 2)
{
for (int i = 1; i < n; i++)
{
if (s & (1 << i))
{
int s_fara_i = (s ^ (1 << i));
for (int j = 0; j < n; j++)
{
if (s_fara_i & (1 << j))
{
dp[s][i] = min(dp[s][i], dp[s_fara_i][j] + c[j][i]);
}
}
}
}
}
int cost = INF, s_total = (1 << n) - 1;
for (int i = 1; i < n; i++)
{
cost = min(cost, dp[s_total][i] + c[i][0]);
}
if (cost == INF)
{
out << "Nu exista solutie\n";
}
else
{
out << cost << "\n";
}
in.close();
out.close();
return 0;
}