//54
#include<iostream>
#include<algorithm>
#include<queue>

using namespace std;

struct S{
  int v,p,t;
  bool operator<(S a)const{
    return t>a.t;
  }
};

int main(){
  for(int n;cin>>n,n;){
    int d[21][21];
    fill(d[0],d[21],1<<29);
    int cn[21]={};
    for(int i=0;i<n-1;i++){
      int a,b,t;
      cin>>a>>b>>t;
      d[a][b]=d[b][a]=t;
      cn[a]++;
      cn[b]++;
    }
    int np=0;
    for(int i=1;i<=n;i++){
      np|=(cn[i]!=1)<<i;
    }
    priority_queue<S> que;
    S is={1,2,0};
    que.push(is);
    static bool p[21][1<<20];
    fill(p[0],p[21],false);
    for(;;){
      S c=que.top();
      if((np&~c.p)==0)break;
      que.pop();
      if(p[c.v][c.p>>1]++)continue;
      for(int i=1;i<=n;i++){
	if(d[c.v][i]!=1<<29){
	  S ns={i,c.p|1<<i,c.t+d[c.v][i]};
	  que.push(ns);
	}
      }
    }
    cout<<que.top().t<<endl;
  }
  return 0;
}