#include<cmath>
#include <iostream>
#include<cstdio>
#include<cstring>
using namespace std;
double l[20][20],f[18][34000];
struct node{
double x,y;
}a[20];
double minx(double p,double q){
if(p<q) return p;
else return q;
}
int main(){
double ans=127;
a[0].x=a[0].y=0;
memset(f,127,sizeof(f));
int n;
scanf("%d",&n);
for(int i=1;i<=n;i++) scanf("%lf%lf",&a[i].x,&a[i].y);
for(int i=0;i<=n;i++){
for(int j=i+1;j<=n;j++){
l[i][j]=l[j][i]=sqrt(1.0*(a[i].x-a[j].x)*(a[i].x-a[j].x)+1.0*(a[i].y-a[j].y)*(a[i].y-a[j].y));
}
}
for(int i=1;i<=n;i++) f[i][(1<<(i-1))]=l[0][i];
for(int k=1;k<(1<<n);k++){
for(int i=1;i<=n;i++){
if((k&(1<<(i-1)))==0) continue;
for(int j=1;j<=n;j++){
if(i==j) continue;
else if((k&(1<<(j-1)))==0) continue;
f[i][k]=minx(f[i][k],f[j][k-(1<<(i-1))]+l[i][j]);
}
}
}
for(int i=1;i<=n;i++) ans=minx(ans,f[i][(1<<n)-1]);
printf("%.2lf",ans);
return 0;
}