#include<deque>
#include<stdint.h>
#include<set>
#include<stack>
#include <iostream>
#include <algorithm>
#include<cmath>
#include<cstring>
#include<cstdio>
#include<cstdlib>
#include<vector>
#include<iomanip>
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<queue>
#include<cstring>
#include<map>
using namespace std;
struct cc
{
	int x,y;
	bool operator < (cc z)const{return x<z.x;} 
}pos[200010];
int n,m,i,j,x1,yy,x2,y2,xs=1,ys=1,x,y,l,r,mid,res;
double s; 
vector<int> ans;
int main()
{
	ios::sync_with_stdio(false);
	cin>>x1>>yy>>x2>>y2>>n;
	if (x1>x2)
	{
		xs=-1;
	}
	if (yy>y2)
	{
		ys=-1;
	}
	x1*=xs;
	x2*=xs;
	yy*=ys;
	y2*=ys;
	for (i=1;i<=n;i++)
	{
		cin>>x>>y;
		x*=xs;
		y*=ys;
		if (x>=x1&&x<=x2&&y>=yy&&y<=y2)
		{
			pos[++m]={x,y};
		}
	}
	sort(pos+1,pos+m+1);
	for (i=1;i<=m;i++)
	{
		if (ans.empty()||ans.back()<pos[i].y) ans.push_back(pos[i].y);
		else *lower_bound(ans.begin(),ans.end(),pos[i].y)=pos[i].y;
	}
	//cout<<m<<' '<<ans.size()<<endl;
	if (ans.size()-1==min(x2-x1,y2-yy))
	{
		 s=10.0*acos(-1)-20;
		 ans.pop_back();
	}
	printf("%.15f",s+(y2-yy+x2-x1)*100.-(20-acos(-1)*5)*ans.size());
	return 0;
}