#include<bits/stdc++.h>
#define I using
#define love namespace
#define oi std
I love oi;
typedef long long ll;
typedef double db;
#define re register int
#define ce continue
#define pf printf
#define sf scanf
#define inf 1e9+10
#define lim 100010
#define mod 998244353
int gcd(int x,int y){return y?gcd(y,x%y):x;}
inline int rd(){
int x=0,f=1;char ch=getchar();
while (ch<'0' || ch>'9'){if (ch=='-')f=-1;ch=getchar();}
while ('0'<=ch && ch<='9'){x=(x<<3)+(x<<1)+(ch^48);ch=getchar();}
return x*f;
}
int n;
db x[20],y[20];
db dis(int x1,int y1,int x2,int y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
db dp[20][1<<18];
signed main(){
ios_base::sync_with_stdio(false);cin.tie(0);
cin>>n;
memset(dp,127,sizeof dp);
for(int i=1;i<=n;i++)cin>>x[i]>>y[i],dp[1<<(i-1)][i]=sqrt(x[i]*x[i]+y[i]*y[i]);
int mx=(1<<n)-1;
for(int i=1;i<=mx;i++){
for(int j=1;j<=n;j++){
if((i&(1<<(j-1)))==0)ce;
for(int k=1;k<=n;k++){
if(j==k)ce;
if((i&(1<<(k-1)))==0) ce;
dp[j][i]=min(dp[j][i],dp[k][i^(1<<(j-1))]+dis(x[k],y[k],x[j],y[j]));
}
}
}
db ans=10000000.0;
for(int i=1;i<=n;i++){
ans=min(ans,dp[i][(1<<n)-1]);
}
printf("%.2lf",ans);
return 0;
}