#include <iostream>
#include <cmath>
#include <string.h>
using namespace std;

int V,E;
int d[15][15] = {0};
int dp[1 << 15][15] = {0};
int inf = 1e8;

int rec(int S, int v){
	if(dp[S][v]>=0) return dp[S][v];
	if(S == (1<<V) -1 && v==0) return (dp[S][v] = 0);
	int res = inf;
	for(int u=0;u<V;u++){
		if(!(S>>u & 1)){
			res = min(res, rec(S | 1<<u, u) + d[v][u]);
		}
	}
	return (dp[S][v] = res);
}

int main(){
	cin >> V >> E;
	for(int i=0;i<V;i++){
		for(int j=0;j<V;j++){
			d[i][j] = inf;
		}
	}
	for(int i=0;i<E;i++){
		int a,b,w;
		cin >> a >> b >> w;
		d[a][b] = w;
	}
	memset(dp,-1,sizeof(dp));
	int ans = rec(0,0);
	if(ans!=inf) cout << ans << endl;
	else cout << -1 << endl;
}
