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:
class TrieNode:
  limit = 0
  min_cost = 32 * 200000
  
  def __init__(self):
    self.nodes = [None, None]
    self.count = 0
    self.cost = 0
    
  def add(self, word, pos = 0):
    delta = len(word) - pos
    self.count += 1
    self.cost += delta
    if self.count == TrieNode.limit:
      TrieNode.min_cost = min(self.cost, TrieNode.min_cost)
    if delta:  
      if not self.nodes[word[pos]]:
        self.nodes[word[pos]] = TrieNode()
      self.nodes[word[pos]].add(word, pos + 1)

def convert(word):
  return list(map(int, format(word, 'b')))

n, TrieNode.limit = map(int, input().split())
x = sorted(map(int, input().split()))
root = TrieNode()
for w in x:
  root.add(convert(w))
print(TrieNode.min_cost)