#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define fo(i,j,l) for(int i=j;i<=l;++i)
#define fd(i,j,l) for(int i=j;i>=l;--i)
using namespace std;
typedef long long ll;
const ll N=32e2,M=2*N,pp=9e11;
int ne[M],lb[M],la[N],size[N],fa[N];
ll co[M];//边权
int n,m,j,k,l,i,o,tot,ppp,a,b;
ll c;
ll f[N][N],g0[N][N],g1[N][N];
void llb(int x,int y,ll z)
{
ne[++tot]=la[x];
la[x]=tot;
lb[tot]=y;
co[tot]=z;
}
ll min(ll a,ll b)
{
return a<b?a:b;
}
void dg(int o)
{
f[o][1]=g1[o][1]=g0[o][1]=0;
f[o][0]=0;
fo(i,2,k)f[o][i]=g0[o][i]=g1[o][i]=pp;
size[o]=1;
for(int y=la[o];y;y=ne[y])
if(fa[lb[y]]==0)
{
int t=lb[y];
fa[t]=o;
dg(t);
fd(i,min(size[o],k),1)
fd(l,min(k-i,size[t]),1)
{
f[o][i+l]=min(f[o][i+l],f[o][i]+f[t][l]+co[y]*2);
g0[o][i+l]=min(g0[o][i+l],g1[o][i]+g1[t][l]+co[y]);
g1[o][i+l]=min(g1[o][i+l],f[o][i]+g1[t][l]+co[y]);
g1[o][i+l]=min(g1[o][i+l],g1[o][i]+f[t][l]+2*co[y]);
g0[o][i+l]=min(g0[o][i+l],g0[o][i]+f[t][l]+2*co[y]);
g0[o][i+l]=min(g0[o][i+l],f[o][i]+g0[t][l]+2*co[y]);
}
fo(i,1,min(k,size[o]))
g0[o][i]=min(g0[o][i],g1[o][i]);
size[o]+=size[t];
}
}
int main()
{
cin>>n>>k;
fo(i,1,n-1)
{
scanf("%d%d%lld",&a,&b,&c);
llb(a,b,c);
llb(b,a,c);
}
fa[n]=-1; dg(n);
ll ans=pp;
fo(i,1,n)
ans=min(ans,min(g0[i][k],g1[i][k]));
printf("%lld",ans);
}