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)
}