← Home
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n, k int
	if _, err := fmt.Fscan(reader, &n, &k); err != nil {
		return
	}

	children := make([][]int, n+1)
	for i := 2; i <= n; i++ {
		var p int
		fmt.Fscan(reader, &p)
		children[p] = append(children[p], i)
	}

	paths := make([]int, 0, n)

	var dfs func(int) int
	dfs = func(u int) int {
		max_h := 0
		for _, v := range children[u] {
			h := dfs(v) + 1
			if h > max_h {
				if max_h > 0 {
					paths = append(paths, max_h)
				}
				max_h = h
			} else {
				paths = append(paths, h)
			}
		}
		return max_h
	}

	max_h := dfs(1)
	if max_h > 0 {
		paths = append(paths, max_h)
	}

	sort.Sort(sort.Reverse(sort.IntSlice(paths)))

	saved := 0
	limit := k + 1
	if limit > len(paths) {
		limit = len(paths)
	}
	for i := 0; i < limit; i++ {
		saved += paths[i]
	}

	ans := 2*(n-1) - saved
	fmt.Println(ans)
}