#include<bits/stdc++.h>
using namespace std;
long long N,Q;
char c;
vector<int>G[1009];
vector<char>Gc[1009];
bool posecen[1009];
int T,u,v;
queue<int>Qu;
bool uspeh;
int main(){
  //freopen("C1.txt","r",stdin);
  ios_base::sync_with_stdio(false);
  cin>>N>>Q;
  while(Q--){
    cin>>T>>u>>v;
    if(T==1){
      cin>>c;
      if(c!='a')exit(2);
      G[u].push_back(v);
      Gc[u].push_back(c);
      G[v].push_back(u);
      Gc[v].push_back(c);
    }
    if(T==2){
      uspeh=false;
      for(int i=1; i<=N; i++)posecen[i]=false;
      Qu.push(u);
      while(Qu.size()){
        u=Qu.front();
        if(u==v){
          uspeh=true;
          break;
        }
        for(int i=0; i<G[u].size(); i++){
          if(posecen[G[u][i]])continue;
          posecen[G[u][i]]=true;
          Qu.push(G[u][i]);
        }
      }
      if(uspeh)cout<<"1\n";
      else cout<<"0\n";
      while(Qu.size())Qu.pop();
    }
  }
  return 0;
}