#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using vint = vector<int>;
using vll = vector<ll>;
using pint = pair<int, int>;
using vpint = vector<pint>;
#define fi first
#define se second
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define rep(i, n) for (int i = 0; i < (n); i++)
#define rrep(i, n) for (int i = (n)-1; i >= 0; i--)
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define RFOR(i, a, b) for (int i = (a)-1; i >= (b); i--)
int solve(int N, int M, vint F, vector<vint> S) {
vector<vint> rS(M, vint(N));
rep(i, M) {
auto& v = S[i]; auto& rv = rS[i];
rep(j, N-1) rv[v[j]] = j;
}
vector<vint> rF(N);
rep(i, N) rF[i].push_back(i);
rep(i, N) if (i != 0) rF[F[i]].push_back(i);
int K = 0;
int max_pos = 0;
rep(i, N-1) {
rep(j, M) {
int cv = S[j][i];
rep(k, M) {
for (auto& c: rF[cv]) {
int c_pos = rS[k][c];
max_pos = max(max_pos, c_pos);
}
}
}
if (max_pos == i) K++;
}
return K;
}