#include<bits/stdc++.h>
using namespace std;
int n;
double minxy,sum;
struct nailao{
double g,h;
bool use;
}xy[20];
void mj(int x){
if(x>n){
minxy=min(minxy,sum);
return;
}
for(int i=1;i<=n;i++){
if(xy[i].use==0){
sum+=sqrt((xy[i-1].g-xy[i].g)*(xy[i-1].g-xy[i].g)+(xy[i-1].h-xy[i].h)*(xy[i-1].h-xy[i].h));
xy[i].use=1;
mj(x+1);
xy[i].use=0;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>xy[i].g;
cin>>xy[i].h;
}
mj(1);
printf("%0.2lf",sum);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
int n;
double minxy,sum;
struct nailao{
double g,h;
bool use;
}xy[20];
void mj(int x){
if(x>n){
minxy=min(minxy,sum);
return;
}
for(int i=1;i<=n;i++){
if(xy[i].use==0){
sum+=sqrt((xy[i-1].g-xy[i].g)*(xy[i-1].g-xy[i].g)+(xy[i-1].h-xy[i].h)*(xy[i-1].h-xy[i].h));
xy[i].use=1;
mj(x+1);
xy[i].use=0;
}
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>xy[i].g;
cin>>xy[i].h;
}
mj(1);
printf("%0.2lf",sum);
return 0;
}