#include <cstdio>
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
struct ak{
int x;
int y;
double dis;
}a[20];
int n,qwe;
bool vis[20];
double ans=1e9+0.1;
vector<int> e;
double s(ak x,ak y){
return sqrt((x.x-y.x)*(x.x-y.x)+(x.y-y.y)*(x.y-y.y));
}
void dfs(int now,int sum,double ans_f){
if(sum==0){
ans=min(ans,ans_f);
return ;
}
double minn=1e9+0.1;
for(int i=1;i<=n;i++){
if(!vis[i])a[i].dis=s(a[now],a[i]);
if(!vis[i]&&a[i].dis<minn){
e.clear();
minn=a[i].dis;
e.push_back(i);
}
else if(!vis[i]&&a[i].dis==minn){
e.push_back(i);
}
}
for(int i=0;i<e.size();i++){
vis[e[i]]=true;
dfs(e[i],sum-1,ans_f+minn);
vis[e[i]]=false;
}
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].x>>a[i].y;
}
dfs(0,n,0.0);
printf("%.2lf\n",ans);
return 0;
}