func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int gcd(long long int x, long long int y) {     if (x < y) swap(x, y);     if (x % y == 0) return y;     return gcd(y, x % y);   }   long long int pwm(long long int a, long long int n) {     long long int ans = 1;     while (n > 0) {       if (n % 2 == 1) {         ans = (ans * a) % 1000000007;       }       a = (a * a) % 1000000007;       n /= 2;     }     return ans % 1000000007;   }   const int pwn = 100010;   long long int pw[pwn];   void pwtwo() {     pw[0] = 1;     for (int i = 1; i < pwn; i++) {       pw[i] = (pw[i - 1] * 2) % 1000000007;     }   }   long long int gcdExtended(long long int a, long long int b, long long int *x,                             long long int *y);   long long int modInverse(long long int a, long long int m) {     if (a == 1) return 1;     long long int x, y;     long long int g = gcdExtended(a, m, &x, &y);     if (g != 1) {       return -1;     } else {       long long int res = (x % m + m) % m;       return res;     }   }   long long int gcdExtended(long long int a, long long int b, long long int *x,                             long long int *y) {     if (a == 0) {       *x = 0, *y = 1;       return b;     }     long long int x1, y1;     long long int gcd = gcdExtended(b % a, a, &x1, &y1);     *x = y1 - (b / a) * x1;     *y = x1;     return gcd;   }   long long int fact[1010];   long long int init() {     fact[0] = 1;     for (int i = 1; i < 1010; i++) fact[i] = (fact[i - 1] * i) % 1000000007;   }   long long int ncr(long long int n, long long int r) {     long long int ans = fact[n];     ans = (ans * modInverse(fact[r], 1000000007)) % 1000000007;     ans = (ans * modInverse(fact[n - r], 1000000007)) % 1000000007;     return ans;   }   long long int t[42];   bool check(int x) {     for (int i = 1; i <= 40; i++) {       if (x == t[i] - 1) return true;     }     return false;   }   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     cout.tie(NULL);     long long int a, b;     cin >> a >> b;     if (a == 1 || b == 1) {       cout << 0 << endl;       return 0;     }     if (a == b) {       cout << 0 << endl;       return 0;     }     long long int x = abs(b - a);     long long int ans = a * b;     ans = ans / gcd(a, b);     long long int c = 0;     for (int i = 1; i <= sqrt(x); i++) {       if ((x % i) == 0) {         long long int y = a % i;         y = (i - y) % i;         long long int k = (a + y) * (b + y);         k = k / gcd(a + y, b + y);         if (ans > k) {           ans = k;           c = y;         }         int z = x / i;         y = a % z;         y = (z - y) % z;         k = (a + y) * (b + y);         k = k / gcd(a + y, b + y);         if (ans > k) {           ans = k;           c = y;         }       }     }     cout << c << endl;     return 0;   }   