#include "september.h"
#include <bits/stdc++.h>
using namespace std;
int solve(int N, int M, std::vector<int> F, std::vector<std::vector<int>> S) {
vector<vector<int>> deg(N, vector<int>(M)), adj(N), cnt(N, vector<int>(M));
for(int i = 1;i<N;i++){
for(int j = 0;j<M;j++) deg[F[i]][j]++;
adj[F[i]].push_back(i);
}
multiset<int> ss[M];
auto add = [&](int x, int t){
if(ss[t].find(cnt[x][t]) != ss[t].end()) ss[t].erase(ss[t].find(cnt[x][t]));
ss[t].insert(++cnt[x][t]);
};
auto rem = [&](int x, int t){
if(ss[t].find(cnt[x][t]) != ss[t].end()) ss[t].erase(ss[t].find(cnt[x][t]));
ss[t].insert(--cnt[x][t]);
};
int ans = 0;
set<int> s[M], c[M], cc;
for(int i = 0;i<N - 1;i++){
bool bigf = 1;
for(int k = 0;k<M;k++){
cc.insert(S[k][i]);
add(S[k][i], k);
for(auto v : adj[S[k][i]]) rem(v, k);
bigf &= (*ss[k].begin() >= 0);
}
if(bigf && cc.size() == i + 1) ++ans;
}
return ans;
}