#include <bits/stdc++.h>
using namespace std;
long long const N = 1e5 + 1;
void solve() {
  long long a, b;
  cin >> a >> b;
  std::set<long long> s1, s2;
  for (long long i = 1; i * i <= a; i++) {
    if (a % i == 0) s1.insert(i);
  }
  for (long long i = 1; i * i <= b; i++) {
    if (b % i == 0) s2.insert(i);
  }
  long long n = (a + b);
  long long ans = 1e18;
  long long i = floor(sqrt(n));
  for (; i >= 1; i--) {
    if (n % i == 0) {
      bool done = 0;
      auto itr = s1.lower_bound(i);
      if (itr == s1.end()) {
        itr--;
        long long k = (*itr);
        if ((a / k) <= (n / i)) {
          done = 1;
        }
      } else if ((*itr) > i) {
        if (itr != s1.begin()) {
          itr--;
          long long k = (*itr);
          if ((a / k) <= (n / i)) {
            done = 1;
          }
        }
      } else {
        long long k = (*itr);
        if ((a / k) <= (n / i)) {
          done = 1;
        }
      }
      if (done) {
        long long k = 2LL * (i + (n / i));
        ans = min(ans, k);
        break;
      }
      auto ptr = s2.lower_bound(i);
      if (ptr == s2.end()) {
        ptr--;
        long long k = (*ptr);
        if ((b / k) <= (n / i)) {
          done = 1;
        }
      } else if ((*ptr) > i) {
        if (ptr != s2.begin()) {
          ptr--;
          long long k = (*ptr);
          if ((b / k) <= (n / i)) {
            done = 1;
          }
        }
      } else {
        long long k = (*ptr);
        if ((b / k) <= (n / i)) {
          done = 1;
        }
      }
      if (done) {
        long long k = 2LL * (i + (n / i));
        ans = min(ans, k);
        break;
      }
    }
  }
  std::cout << ans;
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int t = 1;
  while (t--) {
    solve();
  }
  return 0;
}
