#include "september.h"
#include <bits/stdc++.h>
using namespace std;
void dfs(int u, vector<vector<int>> &G, vector<int> &mn, vector<int> &pos){
mn[u] = pos[u];
for(int &v : G[u]){
dfs(v, G, mn, pos);
mn[u] = max(mn[u], mn[v]);
}
}
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
vector<vector<int>> G(N);
for(int i = 0; i < N; i++){
if(F[i] == -1) continue;
G[F[i]].push_back(i);
}
int cnt = 0;
vector<vector<int>> pos(M, vector<int>(N));
vector<vector<int>> mn(M, vector<int>(N));
for(int i = 0; i < M; i++){
for(int j = 0; j < N - 1; j++) pos[i][S[i][j]] = j;
dfs(0, G, mn[i], pos[i]);
}
int r = 0;
for(int i = 0; i < N - 1; i++){
for(int j = 0; j < M; j++){
r = max(r, mn[j][S[j][i]]);
}
if(r <= i) cnt++;
}
return cnt;
}