#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define INF 100000
int V,E;
int G[15][15];
int dp[1<<15][15];
int min(int a,int b){
  if(a<b)return a;
  else return b;
}
void print(){
  int i,j;
  for(i=0;i<V;i++){
    for(j=0;j<V;j++){
      printf("%d ",dp[i][j]);
    }
    printf("\n");
  }
  printf("\n");
}
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 u,res=INF;
  for(u=0;u<V;u++){
    if(!(S>>u & 1)){
      res=min(res,rec(S|1<<u,u)+G[v][u]);
    }
  }
  return dp[S][v]=res;
}

int main(){
  int i,j;
  int s,t,d;
  int min=100000;
  int ans;
  scanf("%d %d",&V,&E);
  memset(dp,-1,sizeof(dp));
  for(i=0;i<1<<V;i++){
    for(j=0;j<V;j++){
      G[i][j]=INF;
    }
  }
  for(i=0;i<E;i++){
   scanf("%d %d %d",&s,&t,&d);
   G[s][t]=d;
  }
 
  for(i=0;i<V;i++){
    ans=rec(0,i);
    if(min>ans)min=ans;
  }
  if(min==INF)min=-1;
  printf("%d\n",min); 
  return 0;
}