// Arup Guha
// 6/20/2023
// Solution for Kattis Problem: Exam Manipulation
// https://open.kattis.com/problems/exammanipulation

using namespace std;
#include <bits/stdc++.h>

int convert(string s);
int bitsOn(int n);

int main() {

    // Get bounds.
    int nS, nQ;
    cin >> nS >> nQ;

    vector<int> ans(nS);
    for (int i=0; i<nS; i++) {
        string s;
        cin >> s;
        ans[i] = convert(s);
    }

    int res = 0;

    for (int key=0; key<(1<<nQ); key++) {

        int maxW = 0;
        for (int i=0; i<nS; i++) {
            int score = ans[i]^key;
            maxW = max(maxW, bitsOn(score));
        }

        // nQ-maxW is the lowest score...
        res = max(res, nQ-maxW);
    }

    // Ta da!
    cout << res << endl;

    return 0;
}

int convert(string s) {
    int res = 0;
    for (int i=0; i<s.size(); i++) {
        res = 2*res;
        if (s[i] == 'T') res++;
    }
    return res;
}

int bitsOn(int n) {
    int res = 0;
    for (int i=0; i<31; i++)
        if (n&(1<<i))
            res++;
    return res;
}
