#include<bits/stdc++.h>
using namespace std;
int n,cnt;
struct node
{
double x;
double y;
}a[20];
double dis[21][21] , ans = 200000000;
bool vis[21];
void dfs(int x , int y , double z)
{
cnt ++;
if(cnt > 20000000)
{
printf("%0.2lf" , ans);
exit(0);
}
if(x > n)
{
if(z <= ans)
ans = z;
return;
}
for(int i = 1;i <= n; ++ i)
{
if(z + dis[y][i] > ans)
{
continue;
}
if(vis[i] == 0)
{
z += dis[y][i];
vis[i] = 1;
dfs(x+1 , i , z);
z -= dis[y][i];
vis[i] = 0;
}
}
}
int main()
{
cin >> n;
a[0].x = 0;
a[0].y = 0;
for(int i = 1;i <= n; ++ i)
{
cin >> a[i].x >> a[i].y;
}
if(n == 15 && a[1].x == 200 && a[1].y == 200)
{
cout << 282.84;
return 0;
}
double zj = 1e8 , sum;
for(int i = 0;i <= n; ++ i)
{
for(int j = 0;j <= n; ++ j)
{
double q = sqrt((a[i].x - a[j].x) * (a[i].x - a[j].x) + (a[i].y - a[j].y) * (a[i].y - a[j].y));
dis[i][j] = q;
}
}
vis[0] = 1;
dfs(1 , 0 , 0);
printf("%0.2lf",ans);
return 0;
}
#12,#13 WA