N,K=map(int,input().split())
X,Y=[],[]
for i in range(N):
    x,y=map(int,input().split())
    X.append(x)
    Y.append(y)
def dist(i,j):
    if j==-1:
        i,j=j,i
    if i==-1:
        return (X[j]**2+Y[j]**2)**.5
    return ((X[i]-X[j])**2+(Y[i]-Y[j])**2)**.5
inf=1e20
dp=[[inf]*N for bit in range(1<<N)]
for bit in range(1<<N):
    for n in range(N):
        if bit&1<<n:
            if bit==1<<n:
                dp[bit][n]=min(dp[bit][n],dist(-1,n))
            else:
                for m in range(N):
                    if n==m:
                        continue
                    if not bit&1<<m:
                        continue
                    dp[bit][n]=min(dp[bit][n],dp[bit^1<<n][m]+dist(n,m))
DP=[inf]*(1<<N)
for bit in range(1<<N):
    for n in range(N):
        DP[bit]=min(DP[bit],dp[bit][n]+dist(n,-1))
DP[0]=0
dp=DP
DP=[inf]*(1<<N)
DP[0]=0
for bit in range(1<<N):
    subset=bit
    while subset:
        if subset.bit_count()<=K:
            DP[bit]=min(DP[bit],DP[subset^bit]+dp[subset])
        subset-=1
        subset&=bit
ans=DP[-1]
print(ans)