#include <bits/stdc++.h>
struct A {
  int a[100005], b[100005], len;
  char st[100005];
  void Len() { len = strlen(st + 1); }
} s, t;
inline int min(int x, int y) { return x < y ? x : y; }
int a, b, c, d;
bool solve() {
  int p = min(s.a[b], b - a), q = min(t.a[d], d - c);
  int x = s.b[b] - s.b[a], y = t.b[d] - t.b[c];
  if (p < q || (x == 0 && y && p == q)) return 1;
  p %= 3, q %= 3;
  if (x > y)
    return 1;
  else if (x == y) {
    return p != q;
  } else
    return (y - x) & 1;
}
int main() {
  scanf("%s\n%s", s.st + 1, t.st + 1);
  s.Len();
  for (int i = 1; i <= s.len; i++) {
    s.a[i] = s.st[i] == 'A' ? s.a[i - 1] + 1 : 0;
    s.b[i] = s.b[i - 1] + (s.st[i] != 'A');
  }
  t.Len();
  for (int i = 1; i <= t.len; i++) {
    t.a[i] = t.st[i] == 'A' ? t.a[i - 1] + 1 : 0;
    t.b[i] = t.b[i - 1] + (t.st[i] != 'A');
  }
  int Q;
  for (scanf("%d", &Q); Q--;) {
    scanf("%d%d%d%d", &a, &b, &c, &d);
    a--, c--;
    if (solve())
      putchar(48);
    else
      putchar(49);
  }
}
