#include <bits/stdc++.h>
using namespace std;
int n,d;
double x[21],y[21],r[21][21];
double dp[21][1<<21],ans=1000000005;
double ju(double x,double y,double xx,double yy) {
return sqrt((x-xx)*(x-xx)+(y-yy)*(y-yy));
}
int main() {
cin>>n>>d;
for(int i=1; i<=n; i++) {
cin>>x[i]>>y[i];
}
for(int i=1; i<=n; ++i) {
for(int j=1; j<=n; j++)
if(ju(x[i],y[i],x[j],y[j])<=d)
r[i][j]=ju(x[i],y[i],x[j],y[j]);
else r[i][j]=1000000003;
}
for(int k=1; k<=n; k++)
for(int i=1; i<=n; i++)
for(int j=1; j<=n; j++)
if(i!=j&&j!=k&&i!=k)
r[i][j]=min(r[i][j],r[i][k]+r[k][j]);
for(int i=1; i<(1<<n); i++)
for(int j=1; j<=n; j++)
dp[j][i]=10000005;
dp[1][1]=0;
for(int i=0; i<(1<<n); i++) {
for(int j=1; j<=n; j++) {
if(i&(1<<(j-1))) {
int x=i^(1<<(j-1));
for(int k=1; k<=n; k++) {
if((x&(1<<(k-1)))) {
dp[j][i]=min(dp[j][i],dp[k][x]+r[j][k]);
}
}
}
}
}
for(int i=2; i<=n; i++)
ans=min(ans,dp[i][(1<<n)-1]+r[i][1]);
printf("%.2lf",ans);
return 0;
}