#include<iostream>
#include<vector>
#include<algorithm>
#include<queue>
using namespace std;
class B
{
public:
vector<int> b;
B()
{
// b.reserve(301); not really needed
}
};
int count(vector<int>u, vector<int>v) //To count the number of integers one vector has with
//the other
{
sort(u.begin(),u.end());
sort(v.begin(),v.end());
int i=0,j=0,ctr=0;
while(i<u.size()&&j<v.size())
if(u[i]==v[j])
ctr++,i++,j++;
else if(u[i]>v[j])
j++;
else
i++;
return ctr;
}
int main() {
int n,k,p,temp,ctr=0; //n is number of people and k is the threshold value
cin>>n>>k;
vector<B> id;
id.resize(n);
for(int i=0;i<n;i++)
{
cin>>p; //p is the number of integers for the person i
for(int j=0;j<p;j++)
{
cin>>temp;
id[i].b.push_back(temp); //If this line is removed, there is no segmentation fault
}
}
vector<bool> isfriend(n,false);
isfriend[0]=true;
queue<int> q;
q.push(0);
while(q.empty()==false)
{
p=q.front();
q.pop();
for(int i=0;i<n;i++)
if(isfriend[i]==false)
{
temp=count(id[p].b,id[i].b);
if(temp>=k)
{
ctr++;
q.push(i);
isfriend[i]=true;
}
}
}
cout<<ctr; //No. of friends of person 0
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KI2luY2x1ZGU8YWxnb3JpdGhtPgojaW5jbHVkZTxxdWV1ZT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEIKewpwdWJsaWM6CiAgICAgdmVjdG9yPGludD4gYjsKICAgICBCKCkKICAgICB7CiAgICAgICAgIC8vIGIucmVzZXJ2ZSgzMDEpOyBub3QgcmVhbGx5IG5lZWRlZCAKICAgICB9Cn07CmludCBjb3VudCh2ZWN0b3I8aW50PnUsIHZlY3RvcjxpbnQ+dikgLy9UbyBjb3VudCB0aGUgbnVtYmVyIG9mIGludGVnZXJzIG9uZSB2ZWN0b3IgaGFzIHdpdGggCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoZSBvdGhlcgp7CiAgICBzb3J0KHUuYmVnaW4oKSx1LmVuZCgpKTsKICAgIHNvcnQodi5iZWdpbigpLHYuZW5kKCkpOwogICAgaW50IGk9MCxqPTAsY3RyPTA7CiAgICB3aGlsZShpPHUuc2l6ZSgpJiZqPHYuc2l6ZSgpKQogICAgICAgIGlmKHVbaV09PXZbal0pCiAgICAgICAgICAgIGN0cisrLGkrKyxqKys7CiAgICAgICAgZWxzZSBpZih1W2ldPnZbal0pCiAgICAgICAgICAgIGorKzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGkrKzsKICAgIHJldHVybiBjdHI7Cn0KCmludCBtYWluKCkgewoKaW50IG4sayxwLHRlbXAsY3RyPTA7ICAgICAgICAvL24gaXMgbnVtYmVyIG9mIHBlb3BsZSBhbmQgayBpcyB0aGUgdGhyZXNob2xkIHZhbHVlCmNpbj4+bj4+azsKdmVjdG9yPEI+IGlkOwppZC5yZXNpemUobik7CmZvcihpbnQgaT0wO2k8bjtpKyspCnsKICAgIGNpbj4+cDsgICAgICAgICAgICAgICAgICAvL3AgaXMgdGhlIG51bWJlciBvZiBpbnRlZ2VycyBmb3IgdGhlIHBlcnNvbiBpCiAgICBmb3IoaW50IGo9MDtqPHA7aisrKQogICAgewogICAgICAgIGNpbj4+dGVtcDsKICAgICAgICBpZFtpXS5iLnB1c2hfYmFjayh0ZW1wKTsgLy9JZiB0aGlzIGxpbmUgaXMgcmVtb3ZlZCwgdGhlcmUgaXMgbm8gc2VnbWVudGF0aW9uIGZhdWx0CiAgICB9Cn0KdmVjdG9yPGJvb2w+IGlzZnJpZW5kKG4sZmFsc2UpOyAKaXNmcmllbmRbMF09dHJ1ZTsKcXVldWU8aW50PiBxOwpxLnB1c2goMCk7CndoaWxlKHEuZW1wdHkoKT09ZmFsc2UpCnsKICAgIHA9cS5mcm9udCgpOwogICAgcS5wb3AoKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspCiAgICAgICAgaWYoaXNmcmllbmRbaV09PWZhbHNlKQogICAgICAgIHsKICAgICAgICAgICAgdGVtcD1jb3VudChpZFtwXS5iLGlkW2ldLmIpOwogICAgICAgICAgICBpZih0ZW1wPj1rKQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjdHIrKzsKICAgICAgICAgICAgICAgIHEucHVzaChpKTsKICAgICAgICAgICAgICAgIGlzZnJpZW5kW2ldPXRydWU7CiAgICAgICAgICAgIH0KICAgICAgICB9Cn0KY291dDw8Y3RyOyAgICAgICAgICAgICAvL05vLiBvZiBmcmllbmRzIG9mIHBlcnNvbiAwCgpyZXR1cm4gMDsKfQ==