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

using ll = long long;

const int N = 3e5+5;

int n, q, f[N];
string S;

int bit[N];

void update(int p, int v) {
    for (; p <= n; p += p & -p) bit[p] += v;
}

int get(int p) {
    int sum = 0;
    for (; p > 0; p -= p & -p) sum += bit[p];
    return sum;
}

void build(int i) {
    if (i < 1 || i > n) return;
    int cnt = 0;
    if (i - 1 >= 1 && S[i - 1] == S[i]) cnt++;
    if (i - 2 >= 1 && S[i - 2] == S[i]) cnt++;
    update(i, cnt - f[i]);
    f[i] = cnt;
}

void solve() {
    cin >> n >> q >> S;
    S = " " + S;
    for (int i = 1; i <= n; i++) build(i);
    while (q--) {
        int type, l, r; cin >> type >> l >> r;
        if (type == 1) {
            if (S[l] == S[r]) continue;
            swap(S[l], S[r]);
            for (int i = l; i <= l + 2; i++) build(i);
            for (int i = r; i <= r + 2; i++) build(i);
        } else {
            if (l == r) {
                cout << "1\n";
                continue;
            }
            int sum = get(r) - get(l);
            if (l - 1 >= 1 && l + 1 <= r && S[l - 1] == S[l + 1]) sum--;
            cout << (sum == 0 ? "1\n" : "0\n");
        }
    }
}

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

    #define TASK "APALIN"
    if (fopen(TASK".INP", "r")) {
        freopen(TASK".INP", "r", stdin);
        freopen(TASK".OUT", "w", stdout);
    }

    int tests = 1; // cin >> tests;
    while (tests--) solve();

    #ifdef LOCAL
    cerr << "\nTime elapsed: " << clock() << " ms.\n";
    #endif
    return 0;
}