← Home
//created int таджикистан
#include <iostream>
#include <cmath>
#include <deque>
#include <set>
#include <stack>
#include <queue>
#include <map>
#include <unordered_set>
#include <unordered_map>
#include <algorithm>
#include <random>
#include <fstream>
#include <bitset>
#include <ranges>
#include <chrono>
#include <iomanip>
#include <climits>
#include <cctype>
#include <ctime>
 
using namespace std;
using ll = long long;
using ld = long double;
//mt19937 rnd(chrono::high_resolution_clock::now().time_since_epoch().count());
 
void dfs(int u, vector<int> &dp, vector<vector<int> > &g) {
    auto cmp = [&](int kand1, int kand2) {
        return dp[kand1] < dp[kand2];
    };
    for (int v: g[u]) {
        dfs(v, dp, g);
        dp[u] = max(dp[u], dp[v] + 1);
    }
    sort(g[u].begin(), g[u].end(), cmp);
}
 
void dfs_build(int u, ll &res, vector<int> &d, vector<int> &kands, vector<pair<int, int> > &pairs,
               vector<vector<int> > &g) {
    if (g[u].empty()) {
        pairs[u] = {u, u};
        return;
    }
    for (int v: g[u]) {
        d[v] = d[u] + 1;
        dfs_build(v, res, d, kands, pairs, g);
    }
    pairs[u] = {pairs[g[u].front()].first, pairs[g[u].back()].second};
    int last = pairs[g[u].front()].second;
    for (int i = 1; i < (int) g[u].size(); i++) {
        res += d[last] + d[pairs[g[u][i]].first] - 2 * d[u];
        kands.push_back(d[last] + d[pairs[g[u][i]].first] - 2 * d[u] - d[pairs[g[u][i]].first]);
        last = pairs[g[u][i]].second;
    }
}
 
void solve() {
    int n, k;
    cin >> n >> k;
    vector<vector<int> > g(n);
    for (int i = 1; i < n; i++) {
        int p;
        cin >> p;
        g[p - 1].push_back(i);
    }
    vector<int> dp(n);
    dfs(0, dp, g);
    vector<int> kand;
    vector<int> d(n);
    vector<pair<int, int> > pairs(n);
    ll res = 0;
    dfs_build(0, res, d, kand, pairs, g);
    res += d[pairs[0].first];
    sort(kand.begin(), kand.end());
    for (int i = 0; i < k && !kand.empty(); i++) {
        res = min(res, res - kand.back());
        kand.pop_back();
    }
    cout << res << '\n';
}
 
int main() {
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int tt = 1;
    while (tt--) {
        solve();
    }
    return 0;
}