#include<stdio.h>
struct xy {
int x, y;
}a[1212],b[1212];
int dist(xy a, xy b) {return (a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y);}
int D[1212][1212][2];
int min(int a, int b) { if (a < b)return a; return b; }
int main() {
int n, m;
int i, j;
scanf("%d%d", &n, &m);
for (i = 0; i <= m; i++)D[0][i][0] = D[0][i][1] = 2e9;
D[0][0][0] = 0;
for (i = 1; i <= n; i++)scanf("%d%d", &a[i].x, &a[i].y);
for (i = 1; i <= m; i++)scanf("%d%d", &b[i].x, &b[i].y);
a[0] = a[1];
for (i = 1; i <= n; i++) {
D[i][0][1] = 2e9;
D[i][0][0] = D[i - 1][0][0] + dist(a[i - 1], a[i]);
for (j = 1; j <= m; j++) {
D[i][j][0] = min(D[i - 1][j][0] + dist(a[i - 1], a[i]), D[i - 1][j][1] + dist(b[j], a[i]));
D[i][j][1] = min(D[i][j - 1][0] + dist(a[i], b[j]), D[i][j - 1][1] + dist(b[j - 1], b[j]));
}
}
printf("%d", D[n][m][0]);
return 0;
}
I2luY2x1ZGU8c3RkaW8uaD4Kc3RydWN0IHh5IHsKCWludCB4LCB5Owp9YVsxMjEyXSxiWzEyMTJdOwppbnQgZGlzdCh4eSBhLCB4eSBiKSB7cmV0dXJuIChhLnggLSBiLngpKihhLnggLSBiLngpICsgKGEueSAtIGIueSkqKGEueSAtIGIueSk7fQppbnQgRFsxMjEyXVsxMjEyXVsyXTsKaW50IG1pbihpbnQgYSwgaW50IGIpIHsgaWYgKGEgPCBiKXJldHVybiBhOyByZXR1cm4gYjsgfQppbnQgbWFpbigpIHsKCWludCBuLCBtOwoJaW50IGksIGo7CglzY2FuZigiJWQlZCIsICZuLCAmbSk7Cglmb3IgKGkgPSAwOyBpIDw9IG07IGkrKylEWzBdW2ldWzBdID0gRFswXVtpXVsxXSA9IDJlOTsKCURbMF1bMF1bMF0gPSAwOwoJZm9yIChpID0gMTsgaSA8PSBuOyBpKyspc2NhbmYoIiVkJWQiLCAmYVtpXS54LCAmYVtpXS55KTsKCWZvciAoaSA9IDE7IGkgPD0gbTsgaSsrKXNjYW5mKCIlZCVkIiwgJmJbaV0ueCwgJmJbaV0ueSk7CglhWzBdID0gYVsxXTsKCWZvciAoaSA9IDE7IGkgPD0gbjsgaSsrKSB7CgkJRFtpXVswXVsxXSA9IDJlOTsgCgkJRFtpXVswXVswXSA9IERbaSAtIDFdWzBdWzBdICsgZGlzdChhW2kgLSAxXSwgYVtpXSk7CgkJZm9yIChqID0gMTsgaiA8PSBtOyBqKyspIHsKCQkJRFtpXVtqXVswXSA9IG1pbihEW2kgLSAxXVtqXVswXSArIGRpc3QoYVtpIC0gMV0sIGFbaV0pLCBEW2kgLSAxXVtqXVsxXSArIGRpc3QoYltqXSwgYVtpXSkpOwoJCQlEW2ldW2pdWzFdID0gbWluKERbaV1baiAtIDFdWzBdICsgZGlzdChhW2ldLCBiW2pdKSwgRFtpXVtqIC0gMV1bMV0gKyBkaXN0KGJbaiAtIDFdLCBiW2pdKSk7CgkJfQoJfQoJcHJpbnRmKCIlZCIsIERbbl1bbV1bMF0pOwoJcmV0dXJuIDA7Cn0=