#include <bits/stdc++.h>
using namespace std;
int n,vis[2000];
double ans=999999.0;
struct node{
double x,y;
}N[20];
double jl(double x1,double y1,double x2,double y2){
return sqrt(pow(x1-x2,2)+pow(y1-y2,2));
}
void dfs(int l,int cnt,double sum){
if(sum>ans)return ;
if(sum!=0&&cnt==n) ans=min(ans,sum);
for(int i=1;i<=n;i++){
if(!vis[i]){
vis[i]=1;
dfs(i,cnt+1,sum+jl(N[l].x,N[l].y,N[i].x,N[i].y));
vis[i]=0;
}
}
return ;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>N[i].x>>N[i].y;
}
dfs(0,0,0);
if(ans!=999999.0)cout<<fixed<<setprecision(2)<<ans;
else cout<<"0.00";
return 0;
}
求助,状压咋写