//
//  main.cpp
//  LCM
//
//  Created by AMADEJ on 5. 02. 16.
//  Copyright (c) 2016 AMADEJ. All rights reserved.
//

#include <iostream>

using namespace std;

int gcd(int a1,int b1){
    int a,b;
    a=max(a1,b1);
    b=min(a1,b1);
    while (a>=0) {
        a=a-b;
    }
    a=a+b;
    if (a==0) {
        return b;
    } else {
        return gcd(a,b);
    }
}


int main(int argc, const char * argv[])
{
    int a,b;
    cin >> a;
    cin >> b;
    
    if (b>a) { // exchange a,b if necesarry
        int t;
        t=b;
        b=a;
        a=t;
    }
    int soln=1;
    
    
    int cand=(a+1)*(b+1)/gcd(a-b,b+1);
    int z=cand;
    
    
    int n=1;
    while (n<a-b+1) {
        
            z=(a+n)*(b+n)/gcd(a-b,b+n);
        
            if (cand > z) {
                cand=z;
                soln=n;
            }
        
        n=n+1;
    }
    

    cout << soln << endl; 
    
    
    
    // lcm(a+n,b+n)=(a+n)*(b+n)/gcd(a-b,a+n)
    
    
    

    return 0;
}