class Solution {
public:
    int matrixScore(vector<vector<int>>& A) {
        int m = A.size(), n = m ? A[0].size() : 0, res = 0;
        for (int j = 0; j < n; ++j)
        {
            int col = 0;
            for (int i = 0; i < m; ++i)
            {
                //counts digits which are same as A[i][0]
                col += A[i][0] ^ A[i][j];
            }
            res += (1 << (n - 1 - j)) * max(col, m - col);
        }
        return res;
    }
};