#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  int t = a;
  a = b % a;
  b = t;
  long long ans = gcd(a, b);
  return ans;
}
int main() {
  long long a, b;
  cin >> a >> b;
  if (a > b) {
    int t = a;
    a = b;
    b = t;
  }
  long long k, k1 = INT_MAX, m = 9e18 + 9e16;
  if (a == b) {
    return cout << 0, 0;
  }
  for (int i = 1; i * i <= b - a; i++) {
    if ((b - a) % i == 0) {
      if (a % i == 0) {
        k = 0;
      } else if (a % i == b % i) {
        k = i - a % i;
      }
      long long gc = (a + k) * (b + k) / gcd(a + k, b + k);
      if (gc < m) {
        k1 = k;
        m = gc;
      } else if (gc == m) {
        k1 = min(k, k1);
      }
    }
    int i1 = (b - a) / i;
    if ((b - a) % i1 == 0) {
      if (a % i1 == 0) {
        k = 0;
      } else if (a % i1 == b % i1) {
        k = i1 - a % i1;
      }
      long long gc1 = (a + k) * (b + k) / gcd(a + k, b + k);
      if (gc1 < m) {
        k1 = k;
        m = gc1;
      } else if (gc1 == m) {
        k1 = min(k, k1);
      }
    }
  }
  cout << k1;
  return 0;
}
