rt
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll,ll> PII;//前项存储第i个数字,后项存储某个数字(1~9)
map<PII,ll> tbl;//查找第i个数中某个数字(1~9)的出现次数
ll n,T;//如题
PII p[10010];//记录所有数字
ll sum;//答案
int main(){
scanf("%lld%lld",&n,&T);//读入
for(ll i=1;i<=n;i++){
ll m;//p[i]长度
scanf("%lld",&m);
for(ll j=1;j<=m;j++){
ll x;
scanf("%lld",&x);
p[i]=(PII){i,x};//第i个数的x(x为1~9的某数)
tbl[p[i]]++;//每次在第i个数中出现就+1
}
}
for(ll u=1;u<=T;u++){
ll op,x,y;
scanf("%lld%lld%lld",&op,&x,&y);
if(op==1){//把x放在y后面
for(ll i=0;i<=9;i++){
//查找每种(1~9)数字在两个数中的出现次数,再相加
PII a=(PII){x,i};
PII b=(PII){y,i};
tbl[b]+=tbl[a];
}
}else{
//如果每种数字(1~9)出现次数相同,则相似
bool f=true;//先假设不相似
for(ll i=0;i<=9;i++){
//对比每种数字(1~9)
PII a=(PII){x,i};
PII b=(PII){y,i};
if(tbl[a]!=tbl[b]) f=false;//若不同,则不相似
}
if(f) sum+=u;//相似就进行运算
}
}
printf("%lld",sum);//输出
return 0;
}