#include <bits/stdc++.h>
using namespace std;
long long int n, k;
long long int a[6][1002];
long long int ans[1002];
long long int pos[6][1002];
int check(long long int b, long long int a) {
  int flag = 1;
  int p = 1;
  for (p = 1; p < k; p++) {
    if (pos[p][a] < pos[p][b]) {
      flag = 0;
    }
  }
  return flag;
}
int main() {
  long long int i, j;
  cin >> n >> k;
  for (j = 0; j < k; j++) {
    for (i = 0; i < n; i++) {
      cin >> a[j][i];
      pos[j][a[j][i]] = i + 1;
    }
  }
  for (i = 0; i < n; i++) {
    ans[a[0][i]] = 1;
    for (j = 0; j < i; j++) {
      if (check(a[0][j], a[0][i]) == 1) {
        ans[a[0][i]] = max(ans[a[0][i]], ans[a[0][j]] + 1);
      }
    }
  }
  long long int m = 0;
  for (i = 0; i < n; i++) {
    if (m < ans[a[0][i]]) {
      m = ans[a[0][i]];
    }
  }
  cout << m << endl;
  return 0;
}
