#include<bits/stdc++.h>
using namespace std;
const int MaxN=20;
double dp[1<<MaxN][MaxN];
double x[MaxN],y[MaxN];
int n,fin;
double siz(int x1,int y1,int x2,int y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
double dfs(double nx,double ny,int k,int data){
if(dp[data][k]) return dp[data][k];
double ans=0x3F3F3F3F;
for(int i=0;i<n;i++){
if(data&(1<<i)) continue;
ans=min(ans,siz(nx,ny,x[i],y[i])+dfs(x[i],y[i],i,data|(1<<i)));
}
return dp[data][k]=((ans==0x3F3F3F3F)?0:ans);
}
int main(){
cin>>n;
for(int i=0;i<n;i++) fin|=(1<<i);
for(int i=0;i<n;i++) cin>>x[i]>>y[i];
printf("%.2lf",dfs(0,0,17,0));
}