#include <iostream>
#include <vector>
#include <unordered_map>
#include <string>
#include <algorithm>

using namespace std;

int main() {
    int n, m;
    cin >> n >> m;
    cin.ignore(); // 忽略换行符

    vector<string> arr(n);
    for (int i = 0; i < n; ++i) {
        getline(cin, arr[i]); // 读取 n 行字符串
    }

    unordered_map<string, int> columns;
    
    // 构建每一列的字符串并统计出现次数
    for (int j = 0; j < m; ++j) {
        string col;
        for (int i = 0; i < n; ++i) {
            col += arr[i][j]; // 组合列字符串
        }
        columns[col]++; // 统计列字符串出现次数
    }

    // 找到出现次数的最大值
    int total_max = 0;
    for (const auto& entry : columns) {
        total_max = max(total_max, entry.second);
    }

    cout << total_max << endl; // 输出最大出现次数
    return 0;
}