#include<bits/stdc++.h>
using namespace std;
struct node{
int xx,yy;
int vis;
double s;
}a[20];
int n;
double sum,ans=9999999.9,num[50];
double d(int v,int w){
return sqrt((a[v].xx-a[w].xx)*(a[v].xx-a[w].xx)+(a[v].yy-a[w].yy)*(a[v].yy-a[w].yy));
}
void dfs(int x,int y,int step,double ss){
if(step==n){
ans=min(ans,ss);
}
for(int i=1;i<=n;i++){
if(a[i].xx==x and a[i].yy==y) continue;
else{
if(a[i].vis==0){
num[step]=d(x,i);
sum+=num[step];
a[i].vis=1;
dfs(a[i].xx,a[i].yy,step+1,sum);
a[i].vis=0;
sum-=num[step];
}
}
}
}
int main() {
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].xx>>a[i].yy;
}
a[0].vis=1;
a[0].xx=0;a[0].yy=0;
dfs(0,0,0,0);
cout<<ans;
return 0;
}