#include<bits/stdc++.h>
using namespace std;
int n,m;
unordered_map<string,string>f;//存父节点
string find(string x){//返回x祖宗
    if(f[x]!=x)f[x]=find(f[x]);
    //将路径上的所有父节点的父节点变为祖宗(压缩)
    return f[x];
}
int main(){
    cin>>n>>m;
    string s;
    for(int i=0;i<n;i++){
        cin>>s;
        f[s]=s;//初始化父节点
    }
   while(m--){
        int op;string a,b;
        cin>>op>> a>> b;
        if(op==1){
            if(a!=b) f[find(b)]=find(a);
        }
        else {
           
            if(find(a)!=find(b)) cout<<0<<endl;
            else cout<<1<<endl;
        }
    }
    
    
    
    return 0;
}