#include <bits/stdc++.h>

using namespace std;

vector<pair<int, char>> g[1005];
bool visited[1005];
void dfs(int x){
    if(visited[x]) return;
    visited[x] = true;
    for(auto u:g[x]) dfs(u.first);
}
int main()
{
    int n,q;
    cin>>n>>q;
    map<pair<int, int>,int> uradjeno;
    while(q--){
        int r;
        cin>>r;
        if(r==2){
            int u,v;
            cin>>u>>v;
            if(v-1!=u) return 0;
            if(uradjeno[{u,v}]!=0){
                cout<<uradjeno[{u,v}]-5<<endl;
                continue;
            }
            dfs(u);
            if(visited[v]){
                cout<<1<<endl;
                uradjeno[{u,v}] = 6;
            }
            else {
                cout<<0<<endl;
                uradjeno[{u,v}] = 5;
            }
            for(int i=0;i<1005;i++) visited[i] = 0;
        }
        if(r==1){
            int u,v;
            cin>>u>>v;
            char c;
            cin>>c;
            if(uradjeno[{u,v}]!=0) continue;
            g[u].push_back({v,c});
            g[v].push_back({u,c});
        }
    }
}