#include using namespace std; int main(){ int N; cin >> N; vector R(N - 1); for (int i = 0; i < N - 1; i++){ cin >> R[i]; R[i]--; } vector>> E(N); for (int i = 0; i < N - 1; i++){ E[i + 1].push_back(make_pair(0, i)); } for (int i = 0; i < N - 1; i++){ E[i].push_back(make_pair(1, R[i])); } vector d(N, -1); deque> dq; dq.push_back(make_pair(0, 0)); while (!dq.empty()){ int c = dq.front().first; int v = dq.front().second; dq.pop_front(); if (d[v] == -1){ d[v] = c; for (auto P : E[v]){ int w = P.second; if (d[w] == -1){ if (P.first == 0){ dq.push_front(make_pair(c, w)); } else { dq.push_back(make_pair(c + 1, w)); } } } } } cout << d[N - 1] << endl; }