#include <bits/stdc++.h>
using namespace std;
const int INT_INF = 1e9;
const long long LL_INF = 1e18;
const int MAXN = 14200003;
long long a, b;
int adivs[MAXN];
int bdivs[MAXN];
int aidx, bidx;
int abdivs[MAXN];
int abidx;
bool is_possible(long long w, long long h) {
  bool af = true, bf = true;
  int ubidx = upper_bound(adivs, adivs + aidx, w) - adivs;
  if (ubidx == 0)
    af = false;
  else {
    ubidx--;
    long long aw = adivs[ubidx];
    long long ah = a / adivs[ubidx];
    if (aw > w || ah > h) af = false;
  }
  ubidx = upper_bound(bdivs, bdivs + bidx, w) - bdivs;
  if (ubidx == 0)
    bf = false;
  else {
    ubidx--;
    long long bw = bdivs[ubidx];
    long long bh = b / bdivs[ubidx];
    if (bw > w || bh > h) bf = false;
  }
  return (af || bf);
}
int main() {
  scanf("%lld %lld", &a, &b);
  adivs[aidx++] = 1;
  for (long long i = 2; i * i <= a; i++) {
    if (a % i == 0) {
      adivs[aidx++] = i;
    }
  }
  bdivs[bidx++] = 1;
  for (long long i = 2; i * i <= b; i++) {
    if (b % i == 0) {
      bdivs[bidx++] = i;
    }
  }
  abdivs[abidx++] = 1;
  for (long long i = 2; i * i <= a + b; i++) {
    if ((a + b) % i == 0) {
      abdivs[abidx++] = i;
    }
  }
  long long ans = LL_INF;
  for (int i = 0; i < abidx; i++) {
    long long w = abdivs[i];
    long long h = (a + b) / abdivs[i];
    if (w > h) swap(w, h);
    long long tmpp = 2ll * (w + h);
    if (is_possible(w, h)) {
      ans = min(ans, tmpp);
    }
  }
  printf("%lld", ans);
  return 0;
}
