#include <bits/stdc++.h>
using namespace std;

/*

5 6
1 1 2 a
1 2 3 b
2 1 3
2 2 3
1 3 4 a
2 1 4

0
1
1

*/

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);

    int n, q, t, u, v;
    char c;
    vector<vector<int>> veze;
    cin >> n >> q;
    veze.resize(n);
    for(int i = 0; i < q; i++) {
        cin >> t >> u >> v; u--; v--;
        if(t == 1) {
            cin >> c;
            veze[u].push_back(v);
            veze[v].push_back(u);
        }
        else {
            queue<int> frontier;
            set<int> visited;
            frontier.push(u);
            visited.insert(u);
            while(visited.count(v) == 0 && !frontier.empty()) {
                for(int j = 0; j < veze[frontier.front()].size(); j++) {
                    if(visited.count(veze[frontier.front()][j]) == 0) {
                        frontier.push(veze[frontier.front()][j]);
                        visited.insert(veze[frontier.front()][j]);
                    }
                }
                frontier.pop();
            }
            if(visited.count(v) > 0) {
                cout << 1 << '\n';
            }
            else {
                cout << 0 << '\n';
            }
        }
    }
    return 0;
}