#include <bits/stdc++.h>
using namespace std;

int main() {
  int n,m,ans=0;
  string t;
  cin >> n >> m;
  vector<int> a(n);
  vector<string> s(0);
  vector<vector<string>> u(n,vector<string>(0));
  for (int i=0;i<n;i++){
    cin >> a.at(i);
    for (int j=0;j<a.at(i);j++){
      int y=0;
      cin >> t;
      u.at(i).push_back(t);
      for (int k=0;k<s.size();k++){
        if (s.at(k)==t) {y=1;break;}
      }
      if (y==0) s.push_back(t);
    }
    sort(u.at(i).begin(),u.at(i).end());
  }
  sort(s.begin(),s.end());
  vector<vector<pair<pair<string,string>,int>>> h(s.size(),vector<pair<pair<string,string>,int>>(s.size()));
  for (int i=0;i<s.size()-1;i++){
    for (int j=i+1;j<s.size();j++){
      pair<pair<string,string>,int> v;
      v.first.first=s.at(i);v.first.second=s.at(j);v.second=0;
      h.at(i).at(j)=v;
    }
  }
  for (int i=0;i<n;i++){
    for (int j=0;j<a.at(i)-1;j++){
      for (int k=j+1;k<a.at(i);k++){
       for (int e=0;e<s.size()-1;e++){
           if (h.at(e).at(s.size()-1).first.first==u.at(i).at(j)){
         for (int ii=e+1;ii<s.size();ii++){
           if (h.at(e).at(ii).first.first==u.at(i).at(j) && h.at(e).at(ii).first.second==u.at(i).at(k)) h.at(e).at(ii).second++;
         }
           }
       }
      }
    }
  }
  for (int i=0;i<s.size()-1;i++) {
    for (int j=i+1;j<s.size();j++){
      if (h.at(i).at(j).second>=m) ans++;
    }
  }
  cout << ans << endl;
  for (int i=0;i<s.size()-1;i++) {
    for (int j=i+1;j<s.size();j++){
      if (h.at(i).at(j).second>=m) cout << h.at(i).at(j).first.first << " " << h.at(i).at(j).first.second << endl;
    }
  }
}
