#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e3 + 5;
long long n;
double x[MaxN], y[MaxN],dp[MaxN][MaxN];
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
for (long long i=1; i<=n; i++)
{
cin >> x[i] >> y[i];
}
for (long long i=1; i<=n; i++)
{
for (long long j=1; j<=n; j++)
{
dp[i][j]=1e18;
}
}
dp[1][1]=0;
for (long long i=1; i<=n; i++)
{
for (long long j=1; j<=i; j++)
{
dp[i+1][j]=min(dp[i+1][j],dp[i][j]+sqrt((x[i]-x[i+1])*(x[i]-x[i+1])+(y[i]-y[i+1])*(y[i]-y[i+1])));
dp[i+1][i]=min(dp[i+1][i],dp[i][j]+sqrt((x[j]-x[i+1])*(x[j]-x[i+1])+(y[j]-y[i+1])*(y[j]-y[i+1])));
}
}
double ans = 4e18;
for (long long i=1; i<=n; i++)
{
ans=min(ans,dp[n][i]);
}
cout << fixed << setprecision(10) << ans;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgbG9uZyBsb25nIE1heE4gPSAyZTMgKyA1Owpsb25nIGxvbmcgbjsKZG91YmxlIHhbTWF4Tl0sIHlbTWF4Tl0sZHBbTWF4Tl1bTWF4Tl07CgppbnQgbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oMCk7CiAgICBjaW4udGllKDApOwogICAgY2luID4+IG47CiAgICBmb3IgKGxvbmcgbG9uZyBpPTE7IGk8PW47IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4geFtpXSA+PiB5W2ldOwogICAgfQogICAgZm9yIChsb25nIGxvbmcgaT0xOyBpPD1uOyBpKyspCiAgICB7CiAgICAgICBmb3IgKGxvbmcgbG9uZyBqPTE7IGo8PW47IGorKykKICAgICAgIHsKICAgICAgICAgICBkcFtpXVtqXT0xZTE4OwogICAgICAgfQogICAgfQogICAgZHBbMV1bMV09MDsKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTw9bjsgaSsrKQogICAgewogICAgICAgIGZvciAobG9uZyBsb25nIGo9MTsgajw9aTsgaisrKQogICAgICAgIHsKICAgICAgICAgICAgZHBbaSsxXVtqXT1taW4oZHBbaSsxXVtqXSxkcFtpXVtqXStzcXJ0KCh4W2ldLXhbaSsxXSkqKHhbaV0teFtpKzFdKSsoeVtpXS15W2krMV0pKih5W2ldLXlbaSsxXSkpKTsKICAgICAgICAgICAgZHBbaSsxXVtpXT1taW4oZHBbaSsxXVtpXSxkcFtpXVtqXStzcXJ0KCh4W2pdLXhbaSsxXSkqKHhbal0teFtpKzFdKSsoeVtqXS15W2krMV0pKih5W2pdLXlbaSsxXSkpKTsKICAgICAgICB9CiAgICB9CiAgICBkb3VibGUgYW5zID0gNGUxODsKICAgIGZvciAobG9uZyBsb25nIGk9MTsgaTw9bjsgaSsrKQogICAgewogICAgICAgIGFucz1taW4oYW5zLGRwW25dW2ldKTsKICAgIH0KICAgIGNvdXQgPDwgZml4ZWQgPDwgIHNldHByZWNpc2lvbigxMCkgPDwgYW5zOwp9Cg==