#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string>
#include<stack>
#include<queue>
#include<vector>
#include<functional>
#include<list>
#include<map>
#include<set>
#include<unordered_map>
#include<unordered_set>
#include<string.h>
#include<limits.h>
#define int long long
using namespace std;
int ans = LLONG_MAX;
int a, b;
int K[15];
int cost;
void saiki(int c, int d,int e) {//c個目まで見てd個とった 最高の高さはe
if (c == a) {
if (d >= b) {
ans = min(ans, cost);
}
return;
}
if (K[c] > e) {
saiki(c + 1, d + 1, K[c]);
}
else {
saiki(c + 1, d, e);
cost += e - K[c] + 1;
saiki(c + 1, d + 1, e + 1);
cost -= e - K[c] + 1;
}
}
signed main() {
scanf("%lld%lld", &a, &b);
for (int c = 0; c < a; c++) {
scanf("%lld",&K[c]);
}
saiki(1, 1, K[0]);
printf("%lld\n", ans);
}