#include <bits/stdc++.h>
void factorize(long long int n, long long int *f, int *resLen) {
  f[0] = 1;
  int len = 1;
  long long int k;
  for (k = 2; k * k <= n; k++) {
    if (n % k == 0) {
      int c = 0;
      while (n % k == 0) {
        c++;
        n /= k;
      }
      long long int mul;
      int i;
      for (i = 1, mul = k; i <= c; i++, mul *= k) {
        int j;
        for (j = 0; j < len; j++) {
          f[i * len + j] = f[j] * mul;
        }
      }
      len *= c + 1;
    }
  }
  if (n > 1) {
    int i;
    for (i = 0; i < len; i++) {
      f[len + i] = f[i] * n;
    }
    len *= 2;
  }
  *resLen = len;
  return;
}
int cmp(const void *a, const void *b) {
  long long int p = *(long long int *)a;
  long long int q = *(long long int *)b;
  return p == q ? 0 : p - q < 0 ? -1 : 1;
}
void run(void) {
  long long int a, b;
  scanf("%lld%lld", &a, &b);
  long long int factorA[20000];
  int lenA = 0;
  factorize(a, factorA, &lenA);
  long long int factorB[20000];
  int lenB = 0;
  factorize(b, factorB, &lenB);
  long long int s = a + b;
  long long int factorS[40000];
  int lenS = 0;
  factorize(s, factorS, &lenS);
  qsort(factorA, lenA, sizeof(long long int), cmp);
  qsort(factorB, lenB, sizeof(long long int), cmp);
  qsort(factorS, lenS, sizeof(long long int), cmp);
  int ai = 0;
  int bi = 0;
  long long int min = 2 * a + 2 * b + 2;
  int i;
  for (i = 0; i <= (lenS + 1) / 2 && factorS[i] * factorS[i] <= s; i++) {
    long long int r = factorS[i];
    while (ai < lenA && factorA[ai] <= r) ai++;
    while (bi < lenB && factorB[bi] <= r) bi++;
    if (s / r >= a / factorA[ai - 1] || s / r >= b / factorB[bi - 1]) {
      min = 2 * (r + s / r);
    }
  }
  printf("%lld\n", min);
}
int main(void) {
  run();
  return 0;
}
