Problem: You are given the array a consisting of n elements and the integer k ≤ n.

You want to obtain at least k equal elements in the array a. In one move, you can make one of the following two operations:

  * Take one of the minimum elements of the array and increase its value by one (more formally, if the minimum value of a is mn then you choose such index i that a_i = mn and set a_i := a_i + 1); 
  * take one of the maximum elements of the array and decrease its value by one (more formally, if the maximum value of a is mx then you choose such index i that a_i = mx and set a_i := a_i - 1). 



Your task is to calculate the minimum number of moves required to obtain at least k equal elements in the array.

Input

The first line of the input contains two integers n and k (1 ≤ k ≤ n ≤ 2 ⋅ 10^5) — the number of elements in a and the required number of equal elements.

The second line of the input contains n integers a_1, a_2, ..., a_n (1 ≤ a_i ≤ 10^9), where a_i is the i-th element of a.

Output

Print one integer — the minimum number of moves required to obtain at least k equal elements in the array.

Examples

Input


6 5
1 2 2 4 2 3


Output


3


Input


7 5
3 3 2 1 1 1 3


Output


4

Solution (in JAVA):

Solution:
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    import java.util.HashMap;
    import java.util.TreeMap;
    import java.util.Map;
    import java.util.Arrays;
    import java.util.Set;
    import java.util.HashSet;
    import java.util.Iterator;
    import java.util.Collections;
    import java.util.LinkedList;
    import java.util.Stack;
    
    /*
     *
     *  @author Riddle
     *
     */

    public final class EqualizingByDivision
    {
        final static long MOD = (long)1e9+7;

        static class Pair
        {
            int first;
            int second;
            public Pair(int first, int second)
            {
                this.first = first;
                this.second = second;
            }

            @Override
            public boolean equals(Object obj)
            {
                Pair p = (Pair)obj;
                return p.first==first && p.second==second;
            }
        }
        
        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 static void main(String args[])
        {
            FastReader reader = new FastReader();
            PrintWriter out = new PrintWriter(System.out);
            int n = reader.nextInt();
            int k = reader.nextInt();
            int arr[] = new int[n];
            Map<Integer, Integer> map = new TreeMap();
            for(int i=0;i<n;i++)
            {
                arr[i] = reader.nextInt();
                if(map.containsKey(arr[i]))
                {
                    map.put(arr[i], map.get(arr[i])+1);
                }
                else
                {
                    map.put(arr[i], 1);
                }
            }
            boolean result = false;

            for(Map.Entry<Integer, Integer> entry : map.entrySet())
            {   
                if(entry.getValue()>=k)
                {
                    result = true; 
                    break;
                }
            }

            if(result)
            {
                out.println(0);
                out.flush();
                out.close();
                return;
            }
            long total = 0;
            Arrays.sort(arr);
            int max = arr[n-1];

            long min = Integer.MAX_VALUE;
            ArrayList<Integer> keys = new ArrayList(map.keySet());
            for(int i=0;i<=max;i++)
            {
                int count = 0;
                long operations = 0;
                total = 0;
                int y = i;
                for(int j=0;j<keys.size();j++)
                {
                    int x = keys.get(j);
                    operations = 0;
                    while(x>y)
                    {
                        operations++;
                        x>>=1;
                    }
                    if(x==y)
                    {
                        x = keys.get(j);
                        if(map.get(x)>(k-count))
                        {
                            total += operations*(k-count);
                            count = k;
                            break;
                        }
                        else
                        {
                            total += operations*(map.get(x));
                            count += map.get(x);
                        }
                    }   
                }
                // System.out.println(i+":"+total);
                if(count==k)
                min = Math.min(total, min);
            }
            out.println(min);
            out.flush();        
            out.close();
        }


    }