import java.util.*;
import javax.lang.model.util.ElementScanner6;
//import java.lang.Math;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    }
} import java.util.*; util.* java import javax.lang.model.util.ElementScanner6; ElementScanner6 javax.lang.model.util public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    }
} Main public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    } main {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    } Scanner sc = new Scanner(System.in); sc new Scanner(System.in) long n = sc.nextLong(); n sc.nextLong() sc.nextLong sc long k = sc.nextLong(); k sc.nextLong() sc.nextLong sc n = n % k n n % k n k long out = 0; out 0 long w1; w1 long w2 = n; w2 n boolean flg = true; flg true if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        } k == 1 k 1 {
            out = 0;
        } out = 0 out 0 {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        } while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            } flg {
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            } w1 = w2 - k w1 w2 - k w2 k w1 = w1 >= 0 ? w1 : -w1 w1 w1 >= 0 ? w1 : -w1 w1 >= 0 w1 0 w1 -w1 w1 if (w1 >= w2) {
                    out = w2;
                    flg = false;
                } w1 >= w2 w1 w2 {
                    out = w2;
                    flg = false;
                } out = w2 out w2 flg = false flg false w2 = w1 w2 w1 System.out.println(out) System.out.println System.out System System.out out String[] args args public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    }
} public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    }
} Main
import java.util.*;
import javax.lang.model.util.ElementScanner6;
//import java.lang.Math;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        // 入力
        long n = sc.nextLong();
        long k = sc.nextLong();

        // 処理
        //nがkより大きいとき、n % kを求め、それをnとする
        n = n % k;

        long out = 0;
        long w1;
        long w2 = n;
        boolean flg = true;
        if ( k == 1){
            out = 0;
        } else {
            while(flg){
                w1 = w2 - k;
                w1 = w1 >= 0 ? w1 : -w1;
                if (w1 >= w2) {
                    out = w2;
                    flg = false;
                }
                w2 = w1;
            }
        }

        // while(out >= k){
        //     out = n > k ? n - k : k - n;
        // }

        // 出力
        System.out.println(out);
    }
}