#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
// 数据量很大,如果穷举必然超时完全没思路,翻了网友答案
// i,j列 如果构形完全相同 则能保证可以一起转变为全1,因此不同构型则互斥
// 因此答案就是最大相同【列构型】数量
// 这题一般情况下如果考试遇到,若没见过必挂
int main() {
int n, m;
cin >> n >> m;
vector<string> data(n);
for(auto& v : data) {
cin >> v;
}
unordered_map<string,int> dict;
for(auto j = 0; j < m; j++) {
string str;
for(auto i = 0; i < n; i++) {
str += data[i][j];
}
dict[str]++;
}
int cnt = 0;
for(auto & it : dict) {
cnt = max(cnt, it.second);
}
cout << cnt << endl;
}
// 64 位输出请用 printf("%lld")