#include <bits/stdc++.h>
using namespace std;
struct P {
  int x, y;
  bool operator<(const P &a) const {
    if (x != a.x) return x < a.x;
    return y < a.y;
  }
};
long long x, y, z, mod = 1000000007;
vector<P> v[511111];
vector<long long> v1;
int i, n, m, k, a, d, b, c;
int e;
long long o[511111];
int l[511111];
long long j[511111];
stack<int> s;
P u[511111];
string r, r1, r2;
map<long long, int> p;
bool as(P a, P b) { return a.x > b.x; }
int main() {
  scanf("%lld %lld", &x, &y);
  z = x + y;
  long long p = 0, n = min(x, y);
  for (long long i = 1; i * i <= z; i++) {
    if (x % i == 0) n = min(n, x / i);
    if (y % i == 0) n = min(n, y / i);
    if (z % i == 0 && z / i >= n) p = (z / i + i) * 2;
  }
  printf("%lld", p);
}
