#include <stdio.h>
#define min(p,q)((p)<(q)?(p):(q))
#define bit(n,m)((n>>m)&1)

int d[20][20];
int dp[1<<15][15];
int main(){
	int v,e;
	scanf("%d%d",&v,&e);
	for(int i=0;i<v;i++)for(int j=0;j<v;j++)d[i][j]=1e6;
	for(int i=0;i<e;i++){
		int s,t,c;
		scanf("%d%d%d",&s,&t,&c);
		d[s][t]=c;
	}
	for(int i=1;i<1<<v;i++)for(int k=0;k<v;k++)dp[i][k]=1e6;
	dp[1][0]=0;
	for(int i=1;i<1<<v;i++){
		for(int k=0;k<v;k++)if(bit(i,k)){
			for(int j=0;j<v;j++)if(!bit(i,j)){
				dp[i|1<<j][j]=min(dp[i|1<<j][j],dp[i][k]+d[k][j]);
			}
		}
	}
	int ans=1e6;
	for(int i=0;i<v;i++)ans=min(ans,dp[(1<<v)-1][i]+d[i][0]);
	printf("%d\n",ans==1e6?-1:ans);
}
