#pragma GCC optimize("O3")
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
//#include <ext/pb_ds/assoc_container.hpp>
using namespace std;
//using namespace __gnu_pbds;
#define int long long
#define ld long double
#define endl '\n'
#define S second
#define F first
#define pb push_back
#define all(x) x.begin(), x.end()
//typedef tree<int,
// null_type,
// less<int>,
// rb_tree_tag,
// tree_order_statistics_node_update> indexed_set;
const int N = 2e5 + 5;
const int sz = 2e8 + 5;
const int mod = 1e9 + 7;
const int INF = 1e18;
int a[N];
void solve()
{
int n, k, ans = 0;
cin >> n >> k;
for (int i = 1; i <= n; i ++) {
cin >> a[i];
}
ans += a[n] + 1 - a[1];
multiset<int> st;
for (int i = 1; i < n; i ++) {
st.insert(a[i] + 1 - a[i + 1]);
}
for (int i = 1; i < k; i ++) {
ans += *st.begin();
st.erase(st.begin());
}
cout << ans << endl;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int T = 1;
// cin >> T;
while (T --)
{
solve();
}
}