#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 1000 + 10;
int color[MAX_N];
int main() {
  int n;
  cin >> n;
  vector<pair<string, string> > request;
  for (int i = 0; i < n; i++) {
    string temp1, temp2;
    cin >> temp1 >> temp2;
    request.push_back(make_pair(temp1, temp2));
  }
  vector<int> next;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++)
      if (request[i].second == request[j].first) next.push_back(j);
    if (next.size() == i) next.push_back(-1);
  }
  vector<pair<int, int> > ans;
  for (int i = 0; i < n; i++) {
    int tempans = i;
    int flag = 0;
    if (color[i] == 1) flag = 1;
    while (next[tempans] != -1 && color[tempans] == 0) {
      color[tempans] = 1;
      tempans = next[tempans];
    }
    color[tempans] = 1;
    if (!flag) ans.push_back(make_pair(i, tempans));
  }
  cout << ans.size() << endl;
  for (int i = 0; i < ans.size(); i++)
    cout << request[ans[i].first].first << " " << request[ans[i].second].second
         << endl;
}
