#include <algorithm>
#include <cmath>
#include <cstdio>
#include <cstring>
#include <deque>
#include <iostream>
#include <map>
#include <queue>
#include <set>
#include <stack>
#include <string>
#include <utility>
#include <vector>

#define CK(N, A, B) (A <= N && N < B)
#define REP(i, a, b) for (int i = a; i < b; i++)
#define RREP(i, a, b) for (int i = (b - 1); a <= i; i--)
#define F first
#define S second
#define ll long long

const int INF = 1e9;
const long long LLINF = 1e18;

using namespace std;

int dy[] = {0,1,0,-1};
int dx[] = {1,0,-1,0};
int dy8[] = {0,1,1,1,0,-1,-1,-1};
int dx8[] = {1,1,0,-1,-1,-1,0,1};

/*==================================================*/
/*variable*/
ll N;
map<ll, ll> m;
/*==================================================*/
/*function*/

/*==================================================*/

int main() {

    cin>>N;
    REP(i,0,N){
        string s;
        cin>>s;
        ll cnt = 0;
        REP(j,0,s.size()){
            if(s[j] == '^') cnt++;
        }
        m[cnt]++;
    }

    ll ans = 0;
    vector<pair<ll,ll>> v;
    map<ll,ll>::iterator it = m.begin();
    while(it != m.end()){
        v.push_back({(*it).second, (*it).first});
        it++;
    }

    sort(v.begin(), v.end());

    cout<<v[v.size()-1].second<<endl;

    return 0;
}