#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
#include <ext/pb_ds/hash_policy.hpp>
#define int long long
#define endl '\n'
#define all(x) x.begin(), x.end()
#define rall(x) x.rbegin(), x.rend()
#define gcd(x, y) __gcd(x, y)
using namespace std;
using namespace __gnu_pbds;
// template <typename T>
// using __indexed_set = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
// template <typename T>
// using __indexed_mutliset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
void solve()
{
int n, k, s = 0;
cin >> n >> k;
vector<int> v(n);
vector<int> v2;
for (auto &i : v)
{
cin >> i;
}
for (int i = 0; i < n - 1; ++i)
{
int x = v[i + 1] - v[i];
v2.push_back(x);
}
sort(all(v2));
for (int i = 0; i < v2.size() - k + 1; ++i)
{
s += v2[i];
}
cout << s + k;
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(nullptr);
int tc = 1;
// cin >> tc;
while (tc-- > 0)
{
solve();
}
}