#include "september.h"
#include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define pb push_back
const int N = 1e5 + 5, M = 5;
int n, m, cnt[M];
vector<int> child[N];
bool seen[N];
void dfs(int v) {
if (seen[v]) return;
seen[v] = true;
for (int i = 0; i < m; i++) {
cnt[i]++;
}
for (auto u : child[v]) {
if (!seen[u]) {
dfs(u);
}
}
}
int solve(int _N, int _M, std::vector<int> F, std::vector<std::vector<int>> S) {
n = _N, m = _M;
int ans = 0;
for (int i = 0; i < n; i++) {
child[i].clear();
seen[i] = false;
}
for (int i = 0; i < n; i++) {
if (i) child[F[i]].pb(i);
}
for (int i = n - 1; i > 0; i--) {
bool is = 1;
for (int j = 0; j < m; j++) {
is &= (cnt[j] == 0);
}
if (is) ans++;
for (int j = 0; j < m; j++) {
dfs(S[j][i - 1]);
cnt[j]--;
}
}
return ans;
}