#include "september.h"
#include "bits/stdc++.h"
#define ff first
#define ss second
#define pp pop_back
#define ll long long
#define pb push_back
#define ls(v) (int)v.size()
#define all(v) v.begin(),v.end()
#define rall(v) v.rbegin(),v.rend()
#define wr cout << "------------------------" << endl
using namespace std;
const int NN = 1e5 + 5;
vector<vector<int>> g;
int idx[NN][10];
int n, m;
void dfs(int nd){
for(auto it:g[nd]){
dfs(it);
for(int i = 0;i<m;++i) idx[nd][i] = max(idx[nd][i], idx[it][i]);
}
}
int solve(int N, int M, vector<int> F, vector<vector<int>> S) {
n = N, m = M;
for(int i = 0;i<m;++i){
for(int j = 0;j<n - 1;++j){
idx[S[i][j]][i] = j;
}
}
g.clear();
g.resize(n);
for(int i = 1;i<n;++i) g[F[i]].pb(i);
dfs(0);
int ans, x;
ans = x = 0;
for(int i = 0;i<n - 1;++i){
for(int j = 0;j<m;++j){
x = max(x, idx[S[0][i]][j]);
}
if(x == i) ans += 1, x += 1;
}
return ans;
}