from collections import deque INF = 1 << 60 n = int(input()) r = list(map(int, input().split())) g = [[] for _ in range(n)] for u in range(n - 1): g[u].append(r[u] - 1) src = 0 dist = [INF for _ in range(n)] dist[src] = 0 dq = deque() dq.append(src) while len(dq) > 0: cur = dq.popleft() if cur > 0 and dist[cur - 1] > dist[cur]: dist[cur - 1] = dist[cur] dq.appendleft(cur - 1) for nxt in g[cur]: if dist[nxt] > dist[cur] + 1: dist[nxt] = dist[cur] + 1 dq.append(nxt) print(dist[-1])