// KKGyak.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
using namespace std;
#include <iostream>
#include <map>
#include <set>
#include <unordered_set>
int main()
{
int a;
cin >> a;
map<int, unordered_multiset<int>> dataStr;
unordered_set<int> exists;
for (size_t i = 0; i < a; i++)
{
int a, b;
cin >> a >> b;
if (exists.count(a) == 0) {
dataStr.insert({ a,unordered_multiset<int>() });
exists.insert(a);
}
dataStr[a].insert(b);
}
int res = 0;
while (true)
{
int chain = -1;
for (auto m : dataStr) {
if (m.second.size() > 0) {
chain = *m.second.begin();
dataStr[m.first].erase(dataStr[m.first].begin());
break;
}
}
if (chain == -1) break;
while (true)
{
if (exists.count(chain) == 1 && dataStr[chain].size()>0) {
int old = chain;
chain = *dataStr[chain].begin();
dataStr[old].erase(dataStr[old].begin());
}
else break;
}
res++;
}
cout << res;
}
// Run program: Ctrl + F5 or Debug > Start Without Debugging menu
// Debug program: F5 or Debug > Start Debugging menu
// Tips for Getting Started:
// 1. Use the Solution Explorer window to add/manage files
// 2. Use the Team Explorer window to connect to source control
// 3. Use the Output window to see build output and other messages
// 4. Use the Error List window to view errors
// 5. Go to Project > Add New Item to create new code files, or Project > Add Existing Item to add existing code files to the project
// 6. In the future, to open this project again, go to File > Open > Project and select the .sln file