#include<bits/stdc++.h>
using namespace std;
int n;
double dp[15][1<<15],x[15],y[15],dist[15][15];
double di(int x1,int x2,int y1,int y2)
{
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
cin>>n;
memset(dp,127,sizeof(dp));
for(int i=0;i<n;i++)
{
cin>>x[i]>>y[i];
}
for(int i=0;i<n;i++)
{
for(int j=0;j<n;j++)
{
dist[i][j]=di(x[i],x[j],y[i],y[j]);
}
}
for(int s=0;s<(1<<n);s++)
{
for(int i=0;i<n;i++)
{
if(s&(1<<i))
{
for(int j=0;j<n;j++)
{
if((s&(1<<j))==0)
{
dp[s|(1<<j)][j]=min(dp[s|(1<<j)][j],dp[s][i]+dist[i][j]);
}
}
}
}
}
double ans=1e18;
for(int i=0;i<n;i++)
{
ans=min(ans,dp[(1<<n)-1][i]);
//cout<<dp[(1<<n)-1][i]<<" ";
}
printf("%.2lf",ans);
return 0;
}
20pts,记录,样例输出-1.00。