import java.io.*;
import java.util.*;

public class ReinierTranscribedScanner {
    public static void main(String[] args) throws IOException {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(System.in))) {
            new ReinierTranscribedScanner().run(new Scanner(reader));
        }
    }

    List<List<Integer>> adj;
    List<Integer> H;

    int dfs(int i) {
        if (adj.get(i).isEmpty()) return 0;
        int m = -1;
        for (int j : adj.get(i)) {
            if (m < 0) m = dfs(j)+1;
            else {
                int k = dfs(j)+1;
                if (k > m) {
                    int tmp = m;
                    m = k;
                    k = tmp;
                }
                H.add(k);
            }
        }
        return m;
    }

    public void run(Scanner sc) throws IOException {
        int n = sc.nextInt(), k = sc.nextInt();
        adj = new ArrayList<>(n);
        H = new ArrayList<>(n);
        for (int i = 0; i < n; i++) {
            adj.add(new ArrayList<>());
        }

        for (int i = 1; i < n; i++) {
            adj.get(sc.nextInt()).add(i);
        }
        H.add(dfs(0)+1);
        Collections.sort(H);

        int res = H.size();
        for (int i = 0; i < H.size() && H.get(i) <= k; i++) {
            k -= H.get(i);
            res--;
        }
        System.out.println(res);
    }
}
