#include <bits/stdc++.h>
using namespace std;
long long ax, ay, bx, by, tx, ty, n, i, j, k, n1, n2, x, y;
long double mn1, mn2, mn3, mn4, l1, l2, ans1, ans2, ans3, ans4;
pair<long long, long long> a[100005];
int main() {
  cin >> ax >> ay >> bx >> by >> tx >> ty >> n;
  for (i = 1; i <= n; ++i) {
    cin >> a[i].first >> a[i].second;
  }
  if (n == 1) {
    x = a[1].first;
    y = a[1].second;
    mn1 = sqrt(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) + 0.) +
          sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    mn2 = sqrt(((x - bx) * (x - bx)) + ((y - by) * (y - by)) + 0.) +
          sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    cout << setprecision(15) << min(mn1, mn2);
    return 0;
  }
  mn1 = -2000000000000000000;
  mn2 = mn1;
  for (i = 1; i <= n; ++i) {
    x = a[i].first;
    y = a[i].second;
    l1 = sqrt(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) + 0.);
    l2 = sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    if (l2 - l1 > mn1) {
      mn1 = l2 - l1;
      n1 = i;
    }
  }
  x = a[n1].first;
  y = a[n1].second;
  ans3 = sqrt(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) + 0.) +
         sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  for (i = 1; i <= n; ++i) {
    if (i == n1) continue;
    x = a[i].first;
    y = a[i].second;
    ans3 += 2 * sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    l1 = sqrt(((x - bx) * (x - bx)) + ((y - by) * (y - by)) + 0.);
    l2 = sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    if (l2 - l1 > mn2) {
      mn2 = l2 - l1;
      n2 = i;
    }
  }
  x = a[n1].first;
  y = a[n1].second;
  l1 = sqrt(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) + 0.) +
       sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  x = a[n2].first;
  y = a[n2].second;
  l2 = sqrt(((x - bx) * (x - bx)) + ((y - by) * (y - by)) + 0.) +
       sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  ans1 = l1 + l2;
  for (i = 1; i <= n; ++i) {
    if (i == n1 || i == n2) continue;
    x = a[i].first;
    y = a[i].second;
    ans1 += 2 * sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  }
  mn1 = -2000000000000000000;
  mn2 = mn1;
  for (i = 1; i <= n; ++i) {
    x = a[i].first;
    y = a[i].second;
    l1 = sqrt(((x - bx) * (x - bx)) + ((y - by) * (y - by)) + 0.);
    l2 = sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    if (l2 - l1 > mn1) {
      mn1 = l2 - l1;
      n1 = i;
    }
  }
  x = a[n1].first;
  y = a[n1].second;
  ans4 = sqrt(((x - bx) * (x - bx)) + ((y - by) * (y - by)) + 0.) +
         sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  ;
  for (i = 1; i <= n; ++i) {
    if (i == n1) continue;
    x = a[i].first;
    y = a[i].second;
    ans4 += 2 * sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    l1 = sqrt(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) + 0.);
    l2 = sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
    if (l2 - l1 > mn2) {
      mn2 = l2 - l1;
      n2 = i;
    }
  }
  x = a[n2].first;
  y = a[n2].second;
  l1 = sqrt(((x - ax) * (x - ax)) + ((y - ay) * (y - ay)) + 0.) +
       sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  x = a[n1].first;
  y = a[n1].second;
  l2 = sqrt(((x - bx) * (x - bx)) + ((y - by) * (y - by)) + 0.) +
       sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  ans2 = l1 + l2;
  for (i = 1; i <= n; ++i) {
    if (i == n1 || i == n2) continue;
    x = a[i].first;
    y = a[i].second;
    ans2 += 2 * sqrt(((x - tx) * (x - tx)) + ((y - ty) * (y - ty)) + 0.);
  }
  ans1 = min(ans1, ans2);
  ans3 = min(ans3, ans4);
  cout << setprecision(15) << min(ans1, ans3);
}
