//4303
#include<bits/stdc++.h>
#include<nordered_map>
using namespace std;
int n;
unordered_map<string, string> head;
unordered_map<string, int> tail;
int main(){
cin >> n;
while(n--){
string a, b;
cin >> a >> b;
if(!tail.count(a)) head[a] = b, tail[b] = a;
else head[tail[a]] = b, tail[b] = tail[a], tail.erase(a);
}
cout << head.size() << endl;
for(auto& [a, b]: head)
cout << a << ' ' << b << endl;
return 0;
}