#include <iostream>
#include <unordered_map>
#include <vector>
#include <queue>

using namespace std;

typedef long long LL;

struct Data
{
    LL cur;
    int dir;
    LL origin;
};

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    
    int N, K; cin >> N >> K;
    
    LL ans = 0;
    
    vector<int> v(N);
    unordered_map<int, bool> visit;
    
    queue<Data> Q;
    
    for(int i=0; i<N; i++){
        cin >> v[i];
        Q.push({v[i] - 1, -1, v[i]});
        Q.push({v[i] + 1, +1, v[i]});
        
        visit[v[i]] = true;
    }
    
    int cnt=0;
    
    while(Q.size())
    {
        auto cur = Q.front(); Q.pop();
        
        if(cnt == K)
            break;
        
        if(visit[cur.cur])
            continue;
            
        visit[cur.cur] = true;
        cnt++;
        
        ans += abs(cur.cur - cur.origin);
        
        
        LL next = cur.cur + cur.dir;
        
        Q.push({next, cur.dir, cur.origin});
    }

    cout << ans;

    return 0;
}