#include <bits/stdc++.h>
using namespace std;
const int MAXN = 1e+3;
int main() {
  int q;
  cin >> q;
  vector<vector<string> > s;
  for (int i = 0; i < q; i++) {
    string s1, s2;
    cin >> s1 >> s2;
    bool c1 = 0, c2 = 0;
    for (int m = 0; m < s.size(); m++) {
      for (int n = 0; n < s[m].size(); n++) {
        if (s[m][n] == s1 && n < s[m].size() - 1) c1 = 1;
        if (s[m][n] == s2) c2 = 1;
      }
    }
    if (c1 || c2) continue;
    for (int m = 0; m < s.size(); m++) {
      if (s[m][s[m].size() - 1] == s1) {
        s[m].push_back(s2);
        c1 = 1;
      }
    }
    if (!c1) {
      vector<string> tmp;
      s.push_back(tmp);
      s[s.size() - 1].push_back(s1);
      s[s.size() - 1].push_back(s2);
    }
  }
  cout << s.size() << endl;
  for (int i = 0; i < s.size(); i++) {
    cout << s[i][0] << " " << s[i][s[i].size() - 1] << endl;
  }
}
