import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception{

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    }
    //-----------PrintWriter for faster output---------------------------------
    public static PrintWriter out;

    //-----------MyScanner class for faster input----------
    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }
    //--------------------------------------------------------
} import java.io.*; io.* java import java.util.*; util.* java public class Main {

    public static void main(String[] args) throws Exception{

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    }
    //-----------PrintWriter for faster output---------------------------------
    public static PrintWriter out;

    //-----------MyScanner class for faster input----------
    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }
    //--------------------------------------------------------
} Main //-----------PrintWriter for faster output---------------------------------
    public static PrintWriter out; out public static void main(String[] args) throws Exception{

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    } main {

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    } FastReader fs = new FastReader(); fs new FastReader() out = new PrintWriter(new BufferedOutputStream(System.out)) out new PrintWriter(new BufferedOutputStream(System.out)) long n = fs.nextLong(); n fs.nextLong() fs.nextLong fs long k = fs.nextLong(); k fs.nextLong() fs.nextLong fs if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        } n%k==0 n%k n k 0 {
            out.println("0");
        } out.println("0") out.println out "0" if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        } n>k n k {
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        } long neg = n/k ; neg n/k n k long val1 = Math.abs(n - neg*k); val1 Math.abs(n - neg*k) Math.abs Math n - neg*k n neg*k neg k long val2 = Math.abs(n - (neg+1)*k); val2 Math.abs(n - (neg+1)*k) Math.abs Math n - (neg+1)*k n (neg+1)*k (neg+1) neg 1 k long val3 = Math.abs(n - (neg-1)*k); val3 Math.abs(n - (neg-1)*k) Math.abs Math n - (neg-1)*k n (neg-1)*k (neg-1) neg 1 k out.println(Math.min(Math.min(val1,val2),val3)) out.println out Math.min(Math.min(val1,val2),val3) Math.min Math Math.min(val1,val2) Math.min Math val1 val2 val3 {
            out.println(Math.min(n,Math.abs(n-k)));
        } out.println(Math.min(n,Math.abs(n-k))) out.println out Math.min(n,Math.abs(n-k)) Math.min Math n Math.abs(n-k) Math.abs Math n-k n k out.close() out.close out String[] args args public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    } FastReader BufferedReader br; br StringTokenizer st; st public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        } FastReader {
            br = new BufferedReader(new InputStreamReader(System.in));
        } br = new BufferedReader(new InputStreamReader(System.in)) br new BufferedReader(new InputStreamReader(System.in)) String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        } next {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        } while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } st == null || !st.hasMoreElements() st == null st null !st.hasMoreElements() st.hasMoreElements() st.hasMoreElements st {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            } try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                } catch (IOException e) {
                    e.printStackTrace();
                } IOException e {
                    e.printStackTrace();
                } e.printStackTrace() e.printStackTrace e {
                    st = new StringTokenizer(br.readLine());
                } st = new StringTokenizer(br.readLine()) st new StringTokenizer(br.readLine()) return st.nextToken(); st.nextToken() st.nextToken st int nextInt() {
            return Integer.parseInt(next());
        } nextInt {
            return Integer.parseInt(next());
        } return Integer.parseInt(next()); Integer.parseInt(next()) Integer.parseInt Integer next() next long nextLong() {
            return Long.parseLong(next());
        } nextLong {
            return Long.parseLong(next());
        } return Long.parseLong(next()); Long.parseLong(next()) Long.parseLong Long next() next double nextDouble() {
            return Double.parseDouble(next());
        } nextDouble {
            return Double.parseDouble(next());
        } return Double.parseDouble(next()); Double.parseDouble(next()) Double.parseDouble Double next() next String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        } nextLine {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        } String str = ""; str "" try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } IOException e {
                e.printStackTrace();
            } e.printStackTrace() e.printStackTrace e {
                str = br.readLine();
            } str = br.readLine() str br.readLine() br.readLine br return str; str public class Main {

    public static void main(String[] args) throws Exception{

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    }
    //-----------PrintWriter for faster output---------------------------------
    public static PrintWriter out;

    //-----------MyScanner class for faster input----------
    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }
    //--------------------------------------------------------
} public class Main {

    public static void main(String[] args) throws Exception{

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    }
    //-----------PrintWriter for faster output---------------------------------
    public static PrintWriter out;

    //-----------MyScanner class for faster input----------
    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }
    //--------------------------------------------------------
} Main
import java.io.*;
import java.util.*;

public class Main {

    public static void main(String[] args) throws Exception{

        FastReader fs = new FastReader();
        out = new PrintWriter(new BufferedOutputStream(System.out));

        long n = fs.nextLong();
        long k = fs.nextLong();

        if(n%k==0){
            out.println("0");
        }else if(n>k){
            long neg = n/k ;
            long val1 = Math.abs(n - neg*k);
            long val2 = Math.abs(n - (neg+1)*k);
            long val3 = Math.abs(n - (neg-1)*k);
            out.println(Math.min(Math.min(val1,val2),val3));
        }else{
            out.println(Math.min(n,Math.abs(n-k)));
        }









        out.close();
    }
    //-----------PrintWriter for faster output---------------------------------
    public static PrintWriter out;

    //-----------MyScanner class for faster input----------
    public static class FastReader {
        BufferedReader br;
        StringTokenizer st;

        public FastReader() {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() {
            while (st == null || !st.hasMoreElements()) {
                try {
                    st = new StringTokenizer(br.readLine());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            return st.nextToken();
        }

        int nextInt() {
            return Integer.parseInt(next());
        }

        long nextLong() {
            return Long.parseLong(next());
        }

        double nextDouble() {
            return Double.parseDouble(next());
        }

        String nextLine() {
            String str = "";
            try {
                str = br.readLine();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return str;
        }

    }
    //--------------------------------------------------------
}
