#include <iostream>
using namespace std;
#define ll long long
#define INF 2000000010
#define LINF 1LL << 61

int get_n(int, int, int);
int gcd(int, int);

int main()
{
    int a, b, d, n, nMin;
    ll lcm, lcmMin;
    
    cin >> a >> b;
    
    if(a == b)
    {
        cout << 0 << '\n';
        return 0;
    }
    
    if(a > b) swap(a, b);
    
    for(nMin = INF, lcmMin = LINF, d = 1; d * d <= b - a; ++d)
        if((b - a) % d == 0)
        {
            n = get_n(a, b, d);
            lcm = 1LL * (a + n) * (b + n) / d;
            if(lcm < lcmMin || (lcm == lcmMin && n < nMin)) lcmMin = lcm, nMin = n;
            
            n = get_n(a, b, (b - a) / d);
            lcm = 1LL * (a + n) * (b + n) / ((b - a) / d);
            if(lcm < lcmMin || (lcm == lcmMin && n < nMin)) lcmMin = lcm, nMin = n;
        }
    
    cout << nMin << '\n';
    
    return 0;
}

int get_n(int a, int b, int d)
{
    int k, k1 = (b - a) / d;
    
    for(k = a / d + 1; gcd(k, k1) != 1; ++k) ;
    
    return k * d - a;
}

int gcd(int a, int b)
{
    int r;
    
    while(b)
    {
        r = a % b;
        a = b;
        b = r;
    }
    
    return a;
}