#include<bits/stdc++.h>
using namespace std;
const int N = 20;
int n;
struct node{
double x , y;
double operator - (const node B) const{
return sqrt((x - B.x) * (x - B.x) + (y - B.y) * (y - B.y));
}
}a[18];
double f[34000][18];
int main(){
cin >> n;
for(int i = 0 ; i <= (1 << n) ; i++){
for(int j = 1 ; j <= n ; j++){
f[i][j] = 1e4 + 3;
}
}
for(int i = 1 ; i <= n ; i++){
cin >> a[i].x >> a[i].y;
}
for(int i = 1 ; i <= n ; i++){
f[1 << (i - 1)][i] = a[i] - a[0];
}
for(int i = 1 ; i <= (1 << n) ; i++){
for(int j = 1 ; j <= n ; j++){
if(!(i && (1 << (j - 1)))) continue;
for(int k = 1 ; k <= n ; k++){
if(j == k) continue;
if(!(i & (1 << (k - 1)))) continue;
f[i][j] = min(f[i][j] , f[i - (1 << (j - 1))][k] + (a[j] - a[k]));
}
}
}
double ans = 1e5 + 7;
for(int i = 1 ; i <= n ; i++){
ans = min(ans , f[(1 << n) - 1][i]);
}
printf("%.2f" , ans);
return 0;
}