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 PYTHON):

Solution:
import decimal,math
from collections import *
from fractions import gcd
from bisect import bisect_right,bisect_left
import sys

decimal.getcontext().prec = 15

def primeFactors(n): 
	arr=[]
	while n % 2 == 0: 
		arr.append(2) 
		n = n / 2
	for i in xrange(3,int(math.sqrt(n))+1,2): 
		while n % i== 0: 
			arr.append(i) 
			n = n / i 
	if n > 2: 
		arr.append(n)
		# print n
	return arr	 
def z_advanced(s):
	Z = [0] * len(s)
	Z[0] = len(s) 
	rt = 0
	lt = 0
	for k in xrange(1, len(s)):
		if k > rt:
			n = 0
			while n + k < len(s) and s[n] == s[n+k]:
				n += 1
			Z[k] = n
			if n > 0:
				lt = k
				rt = k+n-1
		else:
			p = k - lt  # Pair index.
			right_part_len = rt - k + 1 
			if Z[p] < right_part_len:
				Z[k] = Z[p]
			else:
				i = rt + 1
				while i < len(s) and s[i] == s[i - k]:
					i += 1
				Z[k] = i - k
 
				lt = k
				rt = i - 1
	return max(Z)
def invmod(i,mod):
	return pow(i,mod-2,mod)	
def fact(mod):
	fac= [1,1]
	ifac = [1,1]
	for i in xxrange(2,(3*10**5+ 2)):
		fac.append((fac[-1]*i)%mod)
		# ifac.append((ifac[-1]*invmod(i,mod))%mod)
	return fac,ifac	
def SieveOfEratosthenes(n): 
	prime = [True for i in xrange(n+1)] 
	p = 2
	while (p * p <= n): 
		if (prime[p] == True): 
			
			for i in xrange(p * p, n+1, p): 
				prime[i] = False
		p += 1
	arr=[]
	for p in xrange(2, n): 
		if prime[p]: 
			arr.append(p)
	return arr
def maxSubArraySum(a):
	size=len(a)       
	max_so_far =a[0] 
	curr_max = a[0] 
	for i in xrange(1,size): 
		curr_max = max(a[i], curr_max + a[i]) 
		max_so_far = max(max_so_far,curr_max) 
	return max_so_far 	
def fi():
	return int(sys.stdin.readline())
 
def fi2():
	return map(int, sys.stdin.readline().split())
 
def fi3():
	return sys.stdin.readline()
 
def fo(*args):
	for s in args:
		sys.stdout.write(str(s)+' ')
	sys.stdout.write('\n')
# t = int(raw_input())
# dp=[0]*(2*10**5+6)
dic = defaultdict(list)	
# print dp	

n,k=fi2()
arr=fi2()
arr.sort()
for i in arr:
	j=i
	dic[j].append(0)
	count=0
	while(j!=0):
		j=j/2
		count=count+1
		if(len(dic[j])!=0):
			dic[j].append(count+dic[j][-1])
		else:
			dic[j].append(count)	
mi = 10**20
for i in dic:
	if(len(dic[i])>=k):
		mi = min(mi,dic[i][k-1])	
# print dic
print mi