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


def arrinp():
    return [*map(int, input().split(' '))]


def mulinp():
    return map(int, input().split(' '))


def intinp():
    return int(input())


def solution():
    n, k = mulinp()
    arr = []
    for i in sorted(arrinp()):
        if not arr or arr[-1][0] != i:
            arr.append([i, 1])
        else:
            arr[-1][1] += 1
    costSum = []
    countSum = []
    for i, count in arr:
        if costSum:
            costSum.append(costSum[-1] + count * i)
            countSum.append(countSum[-1] + count)
        else:
            costSum.append(count * i)
            countSum.append(count)
    # print(arr)
    # print(countSum)
    # print(costSum)
    if len(arr) > 1 and k > arr[0][1] and k > arr[-1][1]:
        res = min(costSum[-1] - costSum[0] - (countSum[-1] - countSum[0]) * arr[0][0] -
                  countSum[-1] + k, arr[-1][0] * countSum[-2] - costSum[-2] - countSum[-1] + k)
        # print(costSum[-1] - costSum[0] - (countSum[-1] - countSum[0]) * arr[0][0] -
        #   countSum[-1] + k, arr[-1][0] * countSum[-2] - costSum[-2] - countSum[-1] + k)
    else:
        res = 0
    for i in range(1, len(arr) - 1):
        cost = 0
        fromLeft = arr[i][0] * countSum[i] - costSum[i]
        fromRight = costSum[-1] - costSum[i] - \
            arr[i][0] * (countSum[-1] - countSum[i])
        # print(i, fromLeft, fromRight)
        if countSum[i] < k:
            cost = fromLeft + fromRight + k - countSum[-1]
        elif arr[i][1] < k:
            cost = fromLeft + k - countSum[i]
        # print(cost)
        if countSum[-1] - countSum[i-1] >= k and arr[i][1] < k:
            cost = min(cost, fromRight + k - countSum[-1] + countSum[i-1])
        if res > cost:
            res = cost
    print(res)


testcases = 1
#testcases = int(input())
for _ in range(testcases):
    solution()