#include <bits/stdc++.h>
using namespace std;
vector<int> v[1000000];
int b[1000006] = {}, a[1000006] = {};
bool visit[1000000] = {}, vi[1000000] = {};
struct st {
  long long s1, s2;
} sc[1000006], dd[1000006], cc[1000006];
bool srt(const st &lhs, const st &rhs) {
  if (lhs.s1 != rhs.s1)
    return lhs.s1 < rhs.s1;
  else
    return lhs.s2 < rhs.s2;
}
int main() {
  ios::sync_with_stdio(false);
  long long a, b;
  cin >> a >> b;
  long long sum = (a + b);
  vector<long long> a1;
  for (long long i = sqrt(a); i >= 1; i--) {
    if (a % i == 0) a1.push_back(i);
  }
  vector<long long> b1;
  for (long long i = sqrt(b); i >= 1; i--) {
    if (b % i == 0) b1.push_back(i);
  }
  long long val = 2 + 2 * (a + b);
  for (long long i = sqrt(sum); i >= 2; i--) {
    if (sum % i == 0) {
      long long p = sqrt(a);
      long long k = sum / i;
      long long q = sqrt(b);
      if (a <= i || b <= i || (a % i == 0) || (b % i == 0) || a <= k ||
          b <= k || (a % k == 0) || b % k == 0) {
        k = k + k + i + i;
        if (k < val) {
          val = k;
        }
        continue;
      }
      if ((k + k + i + i) >= val) continue;
      for (long long j = 0; j < a1.size(); j++) {
        bool pi = 0;
        long long lp = a / a1[j];
        if ((a1[j] <= i && lp <= k) || (a1[j] <= k && lp <= i)) {
          k = k + k + i + i;
          if (k < val) {
            val = k;
          }
          pi = 1;
        }
        if (pi == 1) break;
      }
      for (long long j = 0; j < b1.size(); j++) {
        long long lp = b / b1[j];
        bool pi = 0;
        if ((b1[j] <= i && lp <= k) || (b1[j] <= k && lp <= i)) {
          k = k + k + i + i;
          if (k < val) {
            val = k;
          }
          pi = 1;
        }
        if (pi == 1) break;
      }
    }
  }
  cout << val << endl;
  return 0;
}
