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.util.Arrays;
import java.util.Scanner;
//题意：n个数，每次可以任选一个数使它变为原来的一半，求最小操作数使得至少有k个数相等
//思路：，
public class Main {
	public static void main(String args[])
	{
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt(),k=sc.nextInt();
		int str[]=new int[n],ans=Integer.MAX_VALUE;
		for(int i=0;i<n;i++)
		{
			str[i]=sc.nextInt();
		}
		Arrays.sort(str);
		int step[]=new int[200005],sum[]=new int[200005];
		for(int i=0;i<n;i++)
		{
			int temp=str[i],j=1;
			while(temp>0)
			{
				sum[temp]++;
				if(sum[temp]>=k)
					ans=Math.min(ans, step[temp]);//System.out.println(step[temp/2]+" "+step[temp]+" "+i+" "+temp);
				step[temp/2]+=j++;//System.out.println(step[temp/2]+" "+step[temp]);
				temp/=2;
			}
		}
		System.out.println(ans);
	}

}