RT
#include <bits/stdc++.h>
using namespace std;
pair<double, double> site[20];
int N, n;
double f[20][(1 << 15) + 1];
double len(pair<double, double> a, pair<double, double> b) {
return sqrt((a.first - b.first) * (a.first - b.first) + (a.second - b.second) * (a.second - b.second));
}
int main() {
cin >> n;
N = (1 << n) - 1;
for (int i = 1; i <= n; i++) cin >> site[i].first >> site[i].second;
memset(f, 127, sizeof(f));
double ans = f[0][0];
for (int i = 1; i <= n; i++) f[i][1 << (i - 1)] = len({0, 0}, site[i]);
for (int k = 1; k <= 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 || (k & (1 << (j - 1)) == 0)) continue;
f[i][k] = min(f[i][k], f[j][k - (1 << (i - 1))] + len(site[i], site[j]));
}
}
}
for (int i = 1; i <= n; i++) ans = min(f[i][N], ans);
printf("%.2lf\n", ans);
return 0;
}