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
from collections import defaultdict as dfd

n, k = map(int, input().split())
arr = list(map(int, input().split()))

d = dfd(int)
##cost = dfd(int)
value = None
ans = 999999999
cost = [[] for i in range(max(arr)+1)]
for i in arr:
    #uss element ke liye
    d[i] += 1
    cost[i].append(0)
    
##    if d[i]>=k:
##        cost[i].sort()
##        ans = min(ans, sum(cost[:k]))
        
    j = i
    propogate = 0
    while j>0:
        j //= 2
        d[j] += 1
        propogate += 1
        cost[j].append(propogate)
##        
##        if d[j]>=k:
##            cost[j].sort()
##            ans = min(ans, sum(cost[:k]))
            
##    print(d)
##    print(cost)
##    print("-------------------")
for i, j in d.items():
    if j>=k:
        cost[i].sort()
        ans = min(ans, sum(cost[i][:k]))
print(ans)
