#include <bits/stdc++.h>
using namespace std;
vector<int>a[200005];
int s[200005];
int dp[200005],g[200005],sv[200005],rt[200005];
int main(){
int t;
cin>>t;
while(t--){
int n,m;
cin>>n>>m;
int po=-2;
for(int i=1;i<=n;i++){
int x;
cin>>x;
for(int j=1;j<=x;j++){
int p;
cin>>p;
a[i].push_back(p);
}
}
int end=0;
for(int i=n;i>=1;i--){
for(int j=0;j<a[i].size();j++){
if (s[a[i][j]]){
end=i;
break;
}
s[a[i][j]]=1;
}
if (end) break;
}
for(int i=1;i<=n;i++){
for(int j=0;j<a[i].size();j++){
s[a[i][j]]=0;
}
}
int r=0,l=0;
g[0]=0;
for(int i=1;i<=n;i++){
g[i]=r;
if (a[i].size()==0) dp[i]=1,r=i,po=i;
else{
for(int j=0;j<a[i].size();j++){
int p=s[a[i][j]];
if ((p!=0&&g[p]+1>=l)||po+1>=l){
dp[i]=1;
r=i;
}
}
for(int j=0;j<a[i].size();j++){
s[a[i][j]]=i;
}
}
for(int j=0;j<a[i].size();j++){
while(sv[a[i][j]]){
for(int z=0;z<a[l].size();z++){
sv[a[l][z]]--;
}
l++;
}
sv[a[i][j]]++;
}
}
int ans=0;
dp[0]=1;
for(int i=end;i<=n;i++){
if (dp[i]){
for(int j=i+1;j<=n;j++){
if (a[j].size()==0) ans=m;
}
if (ans!=m){
for(int j=i+1;j<=n;j++){
ans+=a[j].size();
}
}
break;
}
}
cout<<ans<<endl;
for(int i=1;i<=n;i++){
for(int j=0;j<a[i].size();j++){
rt[a[i][j]]=sv[a[i][j]]=s[a[i][j]]=0;
}
}
for(int i=1;i<=n;i++) a[i].clear(),dp[i]=g[i]=0;
}
return 0;
}