#include <bits/stdc++.h>
using namespace std;
vector<vector<int> > adp(1005);
vector<int> dp(1005, 0), sp(1005, 1005), ep(1005, -1);
int input[5][1005];
int main() {
  int i, j, n, k, x, w, z, y, ans = 0, f, e;
  cin >> n >> k;
  for (i = 0; i < k; i++) {
    for (j = 0; j < n; j++) {
      cin >> x;
      if (sp[x] > j) sp[x] = j;
      if (ep[x] < j) ep[x] = j;
      input[i][x] = j;
    }
  }
  for (i = 1; i <= n; i++) {
    adp[ep[i]].push_back(i);
  }
  for (i = 0; i < n; i++) {
    for (j = 0; j < adp[i].size(); j++) {
      x = adp[i][j];
      for (w = 0; w < i; w++) {
        for (z = 0; z < adp[w].size(); z++) {
          y = adp[w][z];
          f = 0;
          for (e = 0; e < k; e++)
            if (input[e][x] < input[e][y]) f = 1;
          if (f == 0) dp[x] = max(dp[x], dp[y]);
        }
      }
      dp[x] += 1;
    }
  }
  for (i = 1; i <= n; i++) {
    ans = max(ans, dp[i]);
  }
  cout << ans;
}
