#include<bits/stdc++.h>
using namespace std;
const int N=25,M=1<<15+10;
double dp[N][M],dis[N][N],x[N],y[N],ans=1e9;
double distance(int v,int w){return sqrt((x[v]-x[w])*(x[v]-x[w])+(y[v]-y[w])*(y[v]-y[w]));}
int main(){
int n;cin>>n;
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++)
dis[i][j]=distance(i,j);
dis[j][i]=dis[i][j];
memset(dp,127,sizeof(dp));
for(int i=1;i<=n;i++)dp[i][1<<(i-1)]=dis[0][i];
for(int i=1;i<(1<<n);i++){
for(int j=1;j<=n;j++){
if(!i&1<<(j-1))continue;
for(int k=1;k<=n;k++){
if(i==j||!i&1<<(k-1))continue;
dp[j][i]=min(dp[j][i],dp[k][i-1<<(k-1)]+dis[i][j]);
}
}
}
for(int i=1;i<=n;i++)ans=min(ans,dp[i][1<<n]-1);
cout<<ans;
return 0;
}