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

Solution:
import sys
from collections import defaultdict as dd
def eprint(*args):
    print(*args, file=sys.stderr)
zz=1
from math import *
import copy
#sys.setrecursionlimit(10**6)
if zz:
	input=sys.stdin.readline
else:	
	sys.stdin=open('input.txt', 'r')
	sys.stdout=open('all.txt','w')
def li():
	return [int(x) for x in input().split()]
def fi():
	return int(input())
def si():
	return list(input().rstrip())	
def mi():
	return 	map(int,input().split())	

def bo(i):
	return ord(i)-ord('a')

n,k=mi()
a=li()
a.sort()
pre=[0]*(n+1)
suf=[0]*(n+1)
d=dd(lambda:0)
vis=dd(lambda:0)
for i in range(n):
	pre[i]+=pre[i-1]+a[i]
	d[a[i]]+=1
for i in range(n-1,-1,-1):
	suf[i]=suf[(i+1)%n]+a[i]
mini=10**18	
for i in range(n):
	if vis[a[i]]:
		continue
	p=k-d[a[i]]
	vis[a[i]]=1
	f=0
	if p<=0:
		mini=0
		break
	if i>=p:
		f=1
		c=(a[i]-1)*i-pre[i-1]
		c+=p
		mini=min(mini,c)
	if i+d[a[i]]>=n:
		continue	
	if n-i-d[a[i]]>=p:
			f=1
			z=n-i-d[a[i]]
			c=-(a[i]+1)*z+suf[i+d[a[i]]]
			c+=p
			mini=min(mini,c)
	if not f:
		z=n-i-d[a[i]]
		c=-(a[i]+1)*z+suf[i+d[a[i]]]+(a[i]-1)*i-pre[i-1]+p
		mini=min(mini,c)
	
print(mini)