#include<stdio.h>
#define min(a,b) (a<b?a:b)
#define INF 10000000
int g[16][16],n,i,j,k,v,e,f,t,c;
int dp[1<<17][16];
int main()
{
	scanf("%d%d",&v,&e);
	for(i=0;i<(1<<16);i++)
		for(j=0;j<v;j++)
			i<v?(g[i][j]=dp[i][j]=INF):(dp[i][j]=INF);
	dp[0][0]=0;
	for(i=0;i<e;g[f][t]=c,i++)
		scanf("%d%d%d",&f,&t,&c);
	for(i=0;i<(1<<v);i++)
		for(j=0;j<v;j++)
			for(k=0;k<v;k++)
				if(!(i>>k&1))
					dp[i|(1<<k)][k]=min(dp[i+(1<<k)][k],dp[i][j]+g[j][k]);
	printf("%d\n",dp[(1<<v)-1][0]==INF?-1:dp[(1<<v)-1][0]);
	return 0;
}