N,K=map(int, input().split()) A=[(0,0)] D=[[0]*(N+1) for _ in range(N+1)] for i in range(N): x,y=map(int, input().split()) A.append((x,y)) for i in range(N+1): for j in range(N+1): x,y=A[i] xx,yy=A[j] D[i][j]=((x-xx)**2+(y-yy)**2)**.5 dp=[[[10**18]*(1<<N) for _ in range(K+1)] for i in range(N+1)] from collections import deque d=deque() dp[0][K][0]=0 for bit in range(1<<N): for k in range(0,K+1): for pre in range(N+1): if dp[pre][k][bit]==10**18: continue for nex in range(1,N+1): nxt=nex-1 if (bit>>nxt)&1==0: if k!=0: dp[nex][k-1][bit|(1<<nxt)]=min(dp[nex][k-1][bit|(1<<nxt)],dp[pre][k][bit]+D[pre][nex]) dp[0][K][bit|(1<<nxt)]=min(dp[0][K][bit|(1<<nxt)],dp[pre][k][bit]+D[pre][nxt+1]+D[nex][0]) c=dp[0][K][-1] print(c)