#include <cmath>

#include <algorithm>
#include <iostream>
using namespace std;

int a, b;
long long best_lcm = -1;
int best_n;

int gcd(int a, int b) {
    if (!b) return a;
    return gcd(b, a % b);
}

long long lcm(long long a, long long b) {
    return a * b / gcd(a, b);
}

void check_solution(int gcd) {
    int n1 = gcd - a % gcd;
    if (n1 == gcd) n1 = 0;
    
    int n2 = gcd - b % gcd;
    if (n2 == gcd) n2 = 0;
    
    int dif = abs(n1 - n2);
    if (dif % gcd) return;
    
    int n;
    if (n1 < n2) n = n2;
    else n = n1;
    
    long long current_lcm = lcm(a + n, b + n);
    
    if (best_lcm == -1 || current_lcm < best_lcm || current_lcm == best_lcm && n < best_n) {
        best_lcm = lcm(a + n, b + n);
        best_n = n;
    }
}

int main() {
    cin >> a >> b;
    
    if (a > b) {
        swap(a, b);
    }
    
    int dif = b - a;
    
    if (dif == 0) {
        cout << "0";
        return 0;
    }
    
    for (int i = 1; i * i <= dif; ++i) {
        if (dif % i) continue;
        check_solution(i);
        check_solution(dif / i);
    }
    
    cout << best_n;
}