package main
import (
"bufio"
"fmt"
"io"
"os"
"sort"
)
func main() {
data, _ := io.ReadAll(bufio.NewReaderSize(os.Stdin, 1<<20))
idx := 0
nextInt := func() int {
for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
idx++
}
val := 0
for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
val = val*10 + int(data[idx]-'0')
idx++
}
return val
}
n := nextInt()
k := nextInt()
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = nextInt()
}
sort.Ints(a)
vals := make([]int64, 0, n)
cnts := make([]int64, 0, n)
for _, v := range a {
x := int64(v)
if len(vals) == 0 || vals[len(vals)-1] != x {
vals = append(vals, x)
cnts = append(cnts, 1)
} else {
cnts[len(cnts)-1]++
}
}
m := len(vals)
prefCnt := make([]int64, m)
prefSum := make([]int64, m)
for i := 0; i < m; i++ {
prefCnt[i] = cnts[i]
prefSum[i] = cnts[i] * vals[i]
if i > 0 {
prefCnt[i] += prefCnt[i-1]
prefSum[i] += prefSum[i-1]
}
}
totalCnt := prefCnt[m-1]
totalSum := prefSum[m-1]
needAll := int64(k)
ans := int64(1 << 62)
for i := 0; i < m; i++ {
c := cnts[i]
if c >= needAll {
ans = 0
break
}
t := needAll - c
var lcnt, lsum int64
if i > 0 {
lcnt = prefCnt[i-1]
lsum = prefSum[i-1]
}
rcnt := totalCnt - prefCnt[i]
rsum := totalSum - prefSum[i]
x := vals[i]
bl := (x-1)*lcnt - lsum
br := rsum - (x+1)*rcnt
if lcnt >= t {
cur := bl + t
if cur < ans {
ans = cur
}
}
if rcnt >= t {
cur := br + t
if cur < ans {
ans = cur
}
}
cur := bl + br + t
if cur < ans {
ans = cur
}
}
out := bufio.NewWriterSize(os.Stdout, 1<<20)
fmt.Fprintln(out, ans)
out.Flush()
}