
#define _USE_MATH_DEFINES

#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
#include <queue>
#include <map>

using namespace std;

int LIS[200010];
int const INF = 1 << 29;

typedef pair<int, int> P;

int main(){
	
	int x1, x2, y1, y2, N;
	bool minus = false;
	cin >> x1 >> y1 >> x2 >> y2;
	if(x1 > x2){
		swap(x1, x2);
		swap(y1, y2);
	}
	if(y1 > y2){
		minus = true;
		y1 = -y1;
		y2 = -y2;
	}
	
	vector<P> v;
	P p;
	p.first = x1;
	p.second = y1;
	v.push_back(p);
	p.first = x2;
	p.second = y2;
	v.push_back(p);
	
	cin >> N;
	
	for(int i = 0; i < N; i++){
		P p;
		cin >> p.first >> p.second;
		if(minus){
			p.second = -p.second;
		}
		v.push_back(p);
	}
	
	N += 2;
	
	sort(v.begin(), v.end());
	
	for(int i = 0; i < N; i++){
		LIS[i] = INF;
	}
	
	bool flag = false;
	
	for(int i = 0; i < N; i++){
		if(v[i].first == x2 && v[i].second == y2){
			break;
		}
		if(flag){
			if(v[i].second < y1){
				continue;
			}
			int* pos = lower_bound(LIS, LIS + N, v[i].second);
			*pos = v[i].second;
		}
		if(v[i].first == x1 && v[i].second == y1){
			flag = true;
		}
	}
	
	long long int num = (int)(upper_bound(LIS, LIS + N, y2) - LIS);
	
	long long int dist = (x2 - x1) + (y2 - y1);
	
	long long int d1 = dist * 100 - num * 20;
	
	if(num == min(x2 - x1, y2 - y1) + 1){
		num++;
	}
	
	num *= 5;
	
	double ans = double(d1) + num * M_PI;
	
	printf("%.15f\n", ans);
	
	return 0;
}

