#include<iostream>
#include<vector>
#include<string>
#include<algorithm>
#include<map>
using namespace std;
int main(){
  map<string,int> x;
  map<int,string> y;
  vector<int> pa(10000001,0);

  int n,f,fl;
  string a;
  cin >> n >> f;
  //in

  for(int i=0;i<n;i++){
    int m;
    cin >> m;
    vector<string>st(m);
    for(int j=0;j<m;j++){
      cin >>a;
      st[j].clear();
      st[j]=a;
      fl=0;
      if(x[a]==0){
	//if(x.size()+1==1000)x[a]=0;
	x[a]=x.size()+1;
	y.insert(map<int,string>::value_type(x[a],a));
      }
    }
    for(int l=0;l<m;l++){
      for(int k=l+1;k<m;k++){
	if(st[l]==" "||st[k]==" ")continue;
	//	cout<< st[l]<<" "<<st[k]<<endl;
	if(st[l]>st[k])pa[x[st[k]]*2000+x[st[l]]]++;
	else pa[x[st[l]]*2000+x[st[k]]]++;
      }
    }
  }    
  
  //out
  vector<string>ans;
  int c=0;
  for(int i=2000;i<pa.size();i++){
    if(pa[i]>=f){
      c++;
      ans.push_back( y[i/2000]+" "+y[i%2000]);
    }
    
    //cout <<y[i]<<endl;
    /* if(pa[i]!=0)
       cout << pa[i]<< " "<<endl;*/
  }
  cout << c<<endl;
  sort(ans.begin(),ans.end());
  for(int i=0;i<c;i++){
    cout << ans[i]<< endl;
  }
  return 0;
}
  