#include<iostream>
#include<cstring>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
#include<iomanip>
double a[21][21];
double F[21][34000];
double x[21], y[21];
int N;
double dis(int x1,int y1,int x2,int y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
int main()
{
cin >> N;
memset(F, 127, sizeof(F));
double ans = F[0][0];
for (int i = 1; i <= N; i++)
{
cin >> x[i] >> y[i];
}
x[0] = 0; y[0] = 0;
for (int i = 0; i <= N; i++)
{
for (int j = i+1; j <= N; j++)
{
a[i][j] = dis(x[i], y[i], x[j], y[j]);
a[j][i] = a[i][j];
}
}
for (int i = 1; i <= N; i++)
{
F[i][1 << (i - 1)] = a[0][i];
}
for (int k = 1; k < (1 << N) ; k++)
{
for (int j = 1; j <= N; j++)
{
if ((k & (1 << (j - 1))) == 0)
{
continue;
}
for (int i = 1; i <= N; i++)
{
if (i == j)continue;
if ((k & (1 << (i - 1))) == 0)
{
continue;
}
F[j][k] = min(F[j][k], F[i][k - (1 << (j - 1))] + a[i][j]);
}
}
}
for (int i = 1; i <= N; i++)
{
ans = min(ans, F[i][(1 << N) - 1]);
}
cout << setiosflags(ios::fixed);
cout << setprecision(2) << ans << endl;
return 0;
}