#include<iostream>
#include<math.h>
#include<algorithm>
#include<cstring>
#include<iomanip>
using namespace std;
double x[20];
double y[20];
int n;
double dp[20][35000];
double dis(int i,int j)
{
return sqrt((x[i]-x[j])*(x[i]-x[j])+(y[i]-y[j])*(y[i]-y[j]));
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>x[i];
cin>>y[i];
}
x[0]=y[0]=0;
memset(dp,127,sizeof(dp));
for(int s=1;s<(1<<n);s++)
{
for(int i=1;i<=n;i++)
{
if((s&(1<<(i-1)))==0)
{
continue;
}
if(s==(1<<(i-1)))
{
dp[i][s]=0;
}
for(int j=1;j<=n;j++)
{
if(i==j||(s&(1<<(j-1)))==0)
{
continue;
}
dp[i][s]=min(dp[i][s],dp[j][s-(1<<(i-1))]+dis(i,j));
}
}
}
double ans=1e9;
for(int i=1;i<=n;i++)
{
double s=dp[i][(1<<n)-1]+dis(i,0);
ans=min(ans,s);
}
cout<<fixed<<setprecision(2)<<ans<<endl;
}