#include <bits/stdc++.h>
using namespace std;
int cnt[1010][1010], n, k;
int main() {
  ios_base::sync_with_stdio(0);
  cin >> n >> k;
  vector<int> v(n + 1);
  for (int i = 0; i < k; i++) {
    for (int j = 0; j < n; j++) cin >> v[j], v[j]--;
    for (int j = 0; j < n; j++) {
      for (int k = j + 1; k < n; k++) {
        cnt[v[j]][v[k]]++;
      }
    }
  }
  vector<vector<int> > G(n + 1);
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if (cnt[i][j] == k) G[i].push_back(j);
  vector<int> dp(n, 1);
  int best = 1;
  for (int k = 0; k < n; k++) {
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < G[i].size(); j++) {
        dp[i] = max(dp[G[i][j]] + 1, dp[i]);
        best = max(best, dp[i]);
      }
    }
  }
  cout << best << endl;
}
