#include <bits/stdc++.h>
const double pi = acos(-1);
const int MOD = 1e9 + 7;
const double INF = 1e20 + 7;
const int MAXN = 1e6 + 5;
const double eps = 1e-9;
using namespace std;
long long X[MAXN], Y[MAXN], P[MAXN], Q[MAXN];
double A, B, C;
int main() {
  int n, m;
  scanf("%d", &(n));
  for (int i = 0; i < n; i++) {
    scanf("%I64d", &(X[i])), scanf("%I64d", &(Y[i]));
    A -= 2 * X[i], B -= 2 * Y[i];
    C += X[i] * X[i] + Y[i] * Y[i];
  }
  scanf("%d", &(m));
  for (int i = 0; i < m; i++) scanf("%I64d", &(P[i])), scanf("%I64d", &(Q[i]));
  P[m] = P[0];
  Q[m] = Q[0];
  double x = -A / (2 * n);
  double y = -B / (2 * n);
  double z = (double)n * (x * x + y * y) + A * x + B * y + C;
  bool fl = 0;
  for (int i = 0; i < m; i++)
    if ((P[i + 1] - P[i]) * (y - Q[i]) > (x - P[i]) * (Q[i + 1] - Q[i])) fl = 1;
  if (!fl) return !printf("%.20f\n", z);
  z = INF;
  pair<long long, long long> D, E;
  for (int i = 0; i < m; i++) {
    D = {P[i], Q[i]};
    E = {P[i + 1], Q[i + 1]};
    x = P[i], y = Q[i],
    z = min(z, (double)n * (x * x + y * y) + A * x + B * y + C);
    if (P[i] == P[i + 1]) {
      y = B / (2 * n);
      if (Q[i] > Q[i + 1]) swap(D, E);
      if (D.second < y && y < E.second)
        z = min(z, (double)n * (x * x + y * y) + A * x + B * y + C);
    } else {
      double k = (Q[i + 1] - Q[i]) / (0. + P[i + 1] - P[i]);
      double l = Q[i] - k * P[i];
      x = -(2 * n * k * l + A + B * k) / (2 * (n + n * k * k));
      y = k * x + l;
      if (P[i] > P[i + 1]) swap(D, E);
      if (D.first < x && x < E.first)
        z = min(z, (double)n * (x * x + y * y) + A * x + B * y + C);
    }
  }
  printf("%.20f\n", z);
  return 0;
}
