#include <bits/stdc++.h>
using namespace std;
long long a, b, sum;
long long bin_s(long long be, long long en, long long val,
                const vector<pair<long long, long long>>& vec) {
  long long mid = (be + en) / 2;
  while (be < en - 1) {
    if (vec[mid].first <= val)
      be = mid;
    else
      en = mid;
    mid = (be + en) / 2;
  }
  return be;
}
int main() {
  cin >> a >> b;
  if (b > a) swap(a, b);
  sum = a + b;
  long long cnt = static_cast<long long>(sqrt(sum)) + 1;
  vector<pair<long long, long long>> rect, rect1, rect2;
  while (--cnt)
    if (sum % cnt == 0) rect.push_back({cnt, sum / cnt});
  cnt = static_cast<long long>(sqrt(a)) + 1;
  for (long long i = 1; i < cnt; ++i)
    if (a % i == 0) rect1.push_back({i, a / i});
  cnt = static_cast<long long>(sqrt(b)) + 1;
  for (long long i = 1; i < cnt; ++i)
    if (b % i == 0) rect2.push_back({i, b / i});
  long long res = 1e8;
  long long tmp;
  for (long long i = 0; i < rect.size(); ++i) {
    tmp = bin_s(0, rect1.size(), rect[i].first, rect1);
    if (rect1[tmp].first <= rect[i].first &&
        rect1[tmp].second <= rect[i].second) {
      res = (rect[i].first + rect[i].second) * 2;
      break;
    }
    tmp = bin_s(0, rect2.size(), rect[i].first, rect2);
    if (rect2[tmp].first <= rect[i].first &&
        rect2[tmp].second <= rect[i].second) {
      res = (rect[i].first + rect[i].second) * 2;
      break;
    }
  }
  cout << res << endl;
}
