#include <bits/stdc++.h>
using namespace std;
int n, k, r;
int M[1010][1010];
int P[1010];
int D[1010];
void policz(int u) {
  if (D[u]) return;
  D[u] = 1;
  for (int v = (1); v < (n + 1); ++v)
    if (M[v][u] == k) {
      policz(v);
      D[u] = max(D[u], D[v] + 1);
    }
  r = max(r, D[u]);
}
int main() {
  scanf("%d %d", &n, &k);
  for (int j = (0); j < (k); ++j) {
    for (int i = (0); i < (n); ++i) scanf("%d", &P[i]);
    for (int i = (0); i < (n); ++i)
      for (int j = (i + 1); j < (n); ++j) ++M[P[i]][P[j]];
  }
  for (int i = (1); i < (n + 1); ++i) policz(i);
  printf("%d\n", r);
  return 0;
}
