/// I ovo su verovatno svi moji poeni...
#include<bits/stdc++.h>
#define ll long long
using namespace std;
const int maxn=1005;
int N,Q,rod[maxn],vel[maxn];
int getpar(int x){
   if(rod[x]==x)
      return x;
   rod[x]=getpar(rod[x]);
   return rod[x];
}
void spoj(int a,int b){
   a=getpar(a);
   b=getpar(b);
   if(a==b)
      return;
   if(vel[a]>vel[b])
      rod[b]=a;
   else{
      vel[b]=max(vel[a]+1,vel[b]);
      rod[a]=b;
   }
}
void solve(){
   cin>>N>>Q;
   for(int i=1;i<=N;i++){
      rod[i]=i;
      vel[i]=1;
   }
   while(Q--){
      int t,a,b;
      char c;
      cin>>t>>a>>b;
      if(t==1){
         cin>>c;
         if(c!='a')
            exit(-1);
         spoj(a,b);
      }
      else
         cout<<(getpar(a)==getpar(b))<<"\n";
   }
}
/*
3 5
2 1 2
1 1 2 a
2 1 2
1 2 3 a
2 1 3
*/
void reset(){}
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int T=1;
    //cin>>T;
    while(T--){
        solve();
        reset();
    }
    return 0;
}