#include <iostream>
#include <unordered_map>
#include <unordered_set>
#include <string>

using namespace std;

int main() {
    int n;
    cin >> n;
    unordered_set<string> mem;
    unordered_map<string, int> word_counts;
    int i = 0;  

    for (int _ = 0; _ < n; ++_) {
        string word;
        cin >> word;
        if (mem.find(word) != mem.end()) {
            continue;
        }
        word_counts[word]++;
        if (word_counts[word] == (i + 1)) {
            mem.insert(word);
            i++;
        }
    }

    cout << i << endl;
    return 0;
}
n = int(input())
mem = set()
word_counts = {}
i = 0  

for _ in range(n):
    word = input().strip()
    if word in mem:
        continue
    word_counts[word] = word_counts.get(word, 0) + 1
    if word_counts[word] == (i + 1):
        mem.add(word)
        i += 1

print(i)