#include <bits/stdc++.h>
using namespace std;
template <class T>
inline T bigmod(T p, T e, T M) {
  T ret = 1;
  for (; e > 0; e >>= 1) {
    if (e & 1) ret = (ret * p) % M;
    p = (p * p) % M;
  }
  return (T)ret;
}
template <class T>
inline T gcd(T a, T b) {
  if (b == 0) return a;
  return gcd(b, a % b);
}
template <class T>
inline T modinverse(T a, T M) {
  return bigmod(a, M - 2, M);
}
template <class T>
inline T lcm(T a, T b) {
  a = abs(a);
  b = abs(b);
  return (a / gcd(a, b)) * b;
}
template <class T, class X>
inline bool getbit(T a, X i) {
  T t = 1;
  return ((a & (t << i)) > 0);
}
template <class T, class X>
inline T setbit(T a, X i) {
  T t = 1;
  return (a | (t << i));
}
template <class T, class X>
inline T resetbit(T a, X i) {
  T t = 1;
  return (a & (~(t << i)));
}
inline long long power(long long a, long long b) {
  long long multiply = 1;
  for (int i = (1); i <= (b); i++) {
    multiply *= a;
  }
  return multiply;
}
inline long long ABS(long long a) { return (a >= 0) ? a : -a; }
vector<pair<double, int> > disa, disb, dist;
double ax, ay, bx, by, tx, ty, x, y;
int main() {
  cin >> ax >> ay >> bx >> by >> tx >> ty;
  double ans = 0;
  long long n;
  cin >> n;
  for (int i = (0); i <= (n - 1); i++) {
    cin >> x >> y;
    disa.push_back(
        make_pair(sqrt((ax - x) * (ax - x) + (ay - y) * (ay - y)), i));
    disb.push_back(
        make_pair(sqrt((bx - x) * (bx - x) + (by - y) * (by - y)), i));
    dist.push_back(
        make_pair(sqrt((tx - x) * (tx - x) + (ty - y) * (ty - y)), i));
    disa[i].first = disa[i].first - dist[i].first;
    disb[i].first = disb[i].first - dist[i].first;
    ans += 2.0 * dist[i].first;
  }
  sort(disa.begin(), disa.end());
  sort(disb.begin(), disb.end());
  double a1;
  if (n == 1) {
    a1 = min(ans + disa[0].first, ans + disb[0].first);
  } else {
    a1 = min(ans + disa[0].first, ans + disb[0].first);
    if (disa[0].second != disb[0].second)
      a1 = min(a1, ans + disa[0].first + disb[0].first);
    else {
      a1 = min(a1, disa[0].first + disb[1].first + ans);
      a1 = min(a1, ans + disa[1].first + disb[0].first);
    }
  }
  cout << setprecision(10) << fixed << a1 << '\n';
  return 0;
}
