func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( Ofast )   using namespace std;   template <class T>   T Gcd(T x, T y) {     return y ? Gcd(y, x % y) : x;   }   template <class T>   T Lcm(T x, T y) {     return x / Gcd(x, y) * y;   }   template <class T>   void Adj(T &x, T y) {     if (x >= y) x %= y;     while (x < 0) x += y;   }   const long long MOD = 1000000007LL;   const int M = 5000005;   const int N = 200005;   int _, l, ll, a[N], aa[N], t1, t2, t3, t4, t5, t6, b[N], bb[N], t7, t8;   char s[N], ss[N];   int main() {     while (scanf( %s , (s + 1)), !strlen((s + 1)))       ;     while (scanf( %s , (ss + 1)), !strlen((ss + 1)))       ;     l = strlen(s + 1);     ll = strlen(ss + 1);     for (int i = 1; i <= l; i++) {       a[i] = a[i - 1] + (s[i] ==  B  || s[i] ==  C );       b[i] = (s[i] ==  A ) ? b[i - 1] + 1 : 0;     }     for (int i = 1; i <= ll; i++) {       aa[i] = aa[i - 1] + (ss[i] ==  B  || ss[i] ==  C );       bb[i] = (ss[i] ==  A ) ? bb[i - 1] + 1 : 0;     }     for (scanf( %d , &_); _; _--) {       scanf( %d %d %d %d , &t1, &t2, &t3, &t4);       t5 = a[t2] - a[t1 - 1];       t6 = aa[t4] - aa[t3 - 1];       t7 = t5 ? b[t2] : t2 - t1 + 1;       t8 = t6 ? bb[t4] : t4 - t3 + 1;       if (t7 == t8) {         if (t5 <= t6 && (t6 - t5) % 2 == 0) {           if (t6 > 0 && t5 > 0)             putchar( 1 );           else if (!t6 && !t5)             putchar( 1 );           else             putchar( 0 );         } else           putchar( 0 );         continue;       }       if (t5 == t6) {         if (t7 >= t8 && (t7 - t8) % 3 == 0)           putchar( 1 );         else           putchar( 0 );       } else if (t5 < t6) {         if (t7 - t8 >= 0 && (t6 - t5) % 2 == 0)           putchar( 1 );         else           putchar( 0 );       } else         putchar( 0 );     }     return 0;   }   