//MRasol kheyri
//Iran -> Khorasan -> ferdows -> Baghestan
//15/2/1405
//vasate azmoonima...
#include<bits/stdc++.h>
//#include<september.h>
using namespace std ;
typedef long long ll ;
#define el '\n'
const ll maxn = 1e6 + 100 ;
ll n , m , mark[maxn] , ind[maxn] , mx ;
vector<ll> adj[maxn] ;
void dfs(ll u){
mark[u] = 1 ;
mx = max(mx,ind[u]) ;
for(auto v : adj[u]){
if(!mark[v]){
dfs(v) ;
}
}
return ;
}
int solve(int N , int M , vector<int> F , vector<vector<int>> S){
n = N , m = M ;
if(m != 1){return 101;}
fill(mark,mark+n,0) ;
for(ll i = 0 ; i < n ; i++){
adj[i].clear() ;
}
for(ll i = 1 ; i < n ; i++){
adj[F[i]].push_back(i) ;
}
for(ll i = 0 ; i < ll(S[0].size()) ; i++){
ind[S[0][i]] = i ;
}
ll ans = 0 ;
ll i = 0 ;
while(i < n-1){
mx = i ;
for(ll j = i ; j <= mx ; j++){
if(!mark[S[0][j]]){
dfs(S[0][j]) ;
}
}
ans++ ;
i = mx+1 ;
}
return ans ;
}