#include <iostream>
#include <vector>
#include <set>
#include <map>
#include <algorithm>
using namespace std;

int main() {
  int n, f;
  cin >> n >> f;
  vector<int> m(n);
  vector<vector<string>> item(n);
  map<string, map<string, int>> p;
  set<string> list;
  int i, j, k;
  for (i = 0; i < n; i++) {
    cin >> m[i];
    string input;
    for (j = 0; j < m[i]; j++) {
      cin >> input;
      item[i].push_back(input);
      list.insert(input);
    }
    // cout << "         " << i << ' ' << item[i].size() << endl;
    for (j = 0; j < item[i].size(); j++) {
      for (k = j + 1; k < item[i].size(); k++) {
        // cout << 'a';
        p[item[i][j]][item[i][k]]++;
        p[item[i][k]][item[i][j]]++;
        // cout << p[item[i][j]][item[i][k]] << ' ' << p[item[i][k]][item[i][j]] << endl;
        // if (item[i][j] == item[i][k]) {
        //   cout << "flag0 " << i << ' ' << item[i][j] << ' ' <<  item[i][k] << j << ' ' << k << endl;
        // }
      }
      // cout << endl;
    }
  }

// cout << endl << endl;

  vector<pair<string, string>> result;
  auto ite_i = list.begin();
  // auto ite_std = list.begin();
  // ite_std++;
  // ite_std = ite_std - ite_i;
  for (i = 0; i < list.size(); i++) {
    auto ite_j = list.begin();
    // for (j = 0; j < i; j++) {
    //   ite_j++;
    // }
    for (j = 0; j < list.size(); j++) {
      // cout << *ite_i << ' ' << *ite_j << ' ' << p[*ite_i][*ite_j] << endl;
      if (p[*ite_i][*ite_j] >= f) {
        result.push_back(make_pair(*ite_i, *ite_j));
      }
      ite_j++;
    }
    ite_i++;
  }

  cout << result.size() / 2 << endl;
  for (i = 0; i < result.size(); i++) {
    if (result[i].first < result[i].second) {
      cout << result[i].first << ' ' << result[i].second << endl;
    }
  }

  // cout << result.size() << endl;
  // for (i = 0; i < result.size(); i++) {
  //   cout << result[i].first << ' ' << result[i].second << endl;
  // }

  // auto ite_i = list.begin();
  // for (i = 0; i < list.size(); i++) {
  //   auto ite_j = list.begin();
  //   ite_j += i + 1;
  //   for (j = i + 1; j < list.size(); j++) {
  //     p.insert(make_pair(*ite_i, make_pair(ite_j, 0)));
  //     ite_j++;
  //   }
  //   ite_i++;
  // }




  return 0;
}

