#include<bits/stdc++.h>
using namespace std;
const int N = 20,M = 34000;
int n;
struct pos{
double x,y;
} p[N];
double e[N][N];
double f[M][N];
double sq(double t){
return t * t;
}
double dist(pos p1,pos p2){
return sqrt(sq(p1.x - p2.x) + sq(p1.y - p2.y));
}
double ans;
int main(){
memset(f,0x7f,sizeof f);
ans = f[0][0];
scanf("%d", &n);
for(int i = 1;i <= n;i++)
scanf("%lf%lf", &p[i].x, &p[i].y);
for(int i = 0;i <= n;i++)
for(int j = i + 1;j <= n;j++)
e[i][j] = e[j][i] = dist(p[i],p[j]);
for(int i = 1;i <= n;i++)
f[i][(1 << (i - 1))] = e[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;
if((k & (1 << (j - 1))) == 0)
continue;
f[i][k] = min(f[i][k],f[j][k - (1 << (i - 1))] + e[i][j]);
}
}
}
for(int i = 1;i <= n;i++)
ans = min(ans,f[i][(1 << n) - 1]);
printf("%.2lf",ans);
return 0;
}