#include <bits/stdc++.h>
using namespace std;
struct xy{
double x;
double y;
}p[20];
double dis[20][20];
double ds(xy a, xy b) {
double xx = a.x - b.x;
double yy = a.y - b.y;
return sqrt(xx * xx + yy * yy);
}
int n;
double f[20][32768];
double ans;
int main(void) {
cin >> n;
for (int i = 1; i<= n; i++) {
cin >> p[i].x;
cin >> p[i].y;
}
p[0].x = 0;
p[0].y = 0;
for (int i = 0; i<= n; i++) {
for (int j = i + 1; j <= n; j++) {
dis[i][j] = dis[j][i] = ds(p[i], p[j]);
}
}
for (int i = 0; i <= n; i++)
for (int j = 0; j <= n; j++)
f[i][j] = 10000;
f[0][0] = 0;
for (int s = 1; s <= 1 << n - 1; s++) {
for (int i = 1; i <= n; i++) {
printf("%d",s & 1 << (i - 1));
if (!(s & 1 << (i - 1))) continue;
for (int j = 0; j <= n; j++) {
if (i == j) continue;
if (j && !(s & 1 << (j - 1)))continue;
f[i][s] = min(f[i][s], f[j][s - 1 << (i - 1)] + dis[j][i]);
}
}
}
for (int i = 1; i <= n; i++) ans = min(ans, f[i][1 << n - 1]);
cout << fixed << setprecision(2) << ans;
return 0;
}