#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5,INF=1e9;
struct Point{int x,y;}p[N];
int n,m,flag,a[N];
inline bool cmp(Point a,Point b){return a.x<b.x;}
inline bool check(int x,int y){if(flag)return x>=y;return x<=y;}
inline int binary(int x)
{
	int l=0,r=m;
	while(l<r)
	{
		int mid=(l+r+1)>>1;
		if(check(a[mid],x))l=mid;
		else r=mid-1;
	}
	return l;
}
int main()
{
	int x1,y1,x2,y2;
	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
	if(x1>x2)swap(x1,x2),swap(y1,y2);
	if(y1>y2)flag=1;
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		int x,y;scanf("%d%d",&x,&y);
		if(x>=x1&&x<=x2&&y>=min(y1,y2)&&y<=max(y1,y2))p[++m]=(Point){x,y};
	}
	sort(p+1,p+m+1,cmp);
	a[0]=flag?INF:-INF;
	for(int i=1;i<=m;i++)a[i]=flag?-INF:INF;
	for(int i=1;i<=m;i++)a[binary(p[i].y)+1]=p[i].y;
	int pos=m;while(a[pos]==(flag?-INF:INF))pos--;
	double ans=100.0*(abs(x1-x2)+abs(y1-y2));
	ans=ans-4.2920367320510338076867830836025*pos;
	if(pos==x2-x1+1||pos==max(y1,y2)-min(y1,y2)+1)ans+=15.707963267948966192313216916398;
	printf("%.15lf\n",ans);
	return 0;
}