#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<queue>
#include<algorithm>
using namespace std;
#define N 210
#define d double
#define INF 0xffffff
int n;
int visit[N];
d dis[N],len[N][N];
d a,b,c;
struct node
{
d x,y;
}s[N];
double wal(int i,int j)
{
d length=sqrt(((d)s[i].x-(d)s[j].x)*((d)s[i].x-(d)s[j].x)+((d)s[i].y-(d)s[j].y)*((d)s[i].y-(d)s[j].y));
return 60*length/10000.0 ;
}
double sub(int i,int j)
{
d length=sqrt(((d)s[i].x-(d)s[j].x)*((d)s[i].x-(d)s[j].x)+((d)s[i].y-(d)s[j].y)*((d)s[i].y-(d)s[j].y));
return 60*length/40000.0;
}
void clean()
{
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
len[i][j]=-1;
}
void SPFA()
{
memset(visit,0,sizeof(visit));
for(int i=0;i<=n;i++)
dis[i]=INF;
visit[1]=1;
dis[1]=0;
queue<int>que;
que.push(1);
while(!que.empty())
{
int t=que.front();
for(int i=1;i<=n;i++)
{
if(len[t][i]!=-1 && dis[i]>dis[t]+len[t][i])
{
dis[i]=dis[t]+len[t][i];
if(visit[i]==0)
{
visit[i]=1;
que.push(i);
}
}
}
que.pop();
visit[t]=0;
}
}
int main()
{
scanf("%lf %lf %lf %lf",&s[1].x,&s[1].y,&s[2].x,&s[2].y);
len[1][2]=len[2][1]=wal(1,2);
n=3;c=0;
while(~scanf("%lf %lf",&a,&b))
{
if(a==-1 && b==-1)
{
c=0;
}
else
{
s[n].x=a;
s[n].y=b;
for(int i=1;i<n-c;i++)
len[i][n]=len[n][i]=wal(i,n);
for(int i=n-c;i<n;i++)
len[i][n]=len[n][i]=sub(i,n);
c=1;
n++;
}
}
n--;
SPFA();
printf("%.0lf\n",dis[2]);
return 0;
}