#include<bits/stdc++.h>
using namespace std;
struct point{
double x;
double y;
};
inline double dis(point a,point b){
double t1=(a.x-b.x)*(a.x-b.x);
double t2=(a.y-b.y)*(a.y-b.y);
return sqrt(t1+t2);
}
int n;
point p[20];
double ans=100000001;
bool v[20];
int path[20];
void dfs(int a){
if(a>n){
double temp=0;
for(int i=1;i<=n;i++){
temp+=dis(p[path[i-1]],p[path[i]]);
}
ans=min(ans,temp);
}
for(int i=1;i<=n;i++){
if(!v[i]){
path[a]=i;
v[i]=true;
dfs(a+1);
v[i]=false;
}
}
}
int main(){
cin>>n;
p[0]={0,0};
for(int i=1;i<=n;i++){
cin>>p[i].x>>p[i].y;
}
dfs(1);
printf("%.2f",ans);
return 0;
}