#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)