#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-7;
const long long INFF = 1e18;
const int INF = 1e9;
const int mod = 1e9 + 7;
const int MAX = 2e7 + 7;
vector<long long> st1, st2;
int main(void) {
  long long a, b;
  scanf("%lld %lld", &a, &b);
  ;
  long long c = a + b;
  for (long long i = 1; i <= MAX; ++i) {
    if (i * i > a) break;
    if (a % i == 0) st1.push_back(i);
  }
  int tp = ((int)st1.size()) - 1;
  for (int i = tp; i >= 0; --i) st1.push_back(a / st1[i]);
  for (long long i = 1; i <= MAX; ++i) {
    if (i * i > b) break;
    if (b % i == 0) st2.push_back(i);
  }
  tp = ((int)st2.size()) - 1;
  for (int i = tp; i >= 0; --i) st2.push_back(b / st2[i]);
  long long ans = INFF;
  for (long long i = 1; i <= MAX; ++i) {
    if (i * i > c) break;
    if (c % i == 0) {
      bool ok = 0;
      long long n = i, m = c / i;
      long long n1 = *(--upper_bound((st1).begin(), (st1).end(), n));
      if (m >= a / n1) ok = 1;
      n1 = *(--upper_bound((st1).begin(), (st1).end(), m));
      if (n >= a / n1) ok = 1;
      n1 = *(--upper_bound((st2).begin(), (st2).end(), n));
      if (m >= b / n1) ok = 1;
      n1 = *(--upper_bound((st2).begin(), (st2).end(), m));
      if (n >= b / n1) ok = 1;
      if (ok) ans = min(ans, 2 * (n + m));
    }
  }
  printf("%lld\n", ans);
  return 0;
}
