#include <bits/stdc++.h>
using namespace std;
const int N = (1 << 18);
const double PI = acos(-1.0);
char s[N];
int lA, lB;
int a[N], b[N];
int inB[110][N];
int S, B;
struct cpx {
  double x, y;
  cpx(double p = 0, double q = 0) : x(p), y(q) {}
  cpx operator+(cpx &o) { return cpx(x + o.x, y + o.y); }
  cpx operator-(cpx &o) { return cpx(x - o.x, y - o.y); }
  cpx operator*(cpx &o) { return cpx(x * o.x - y * o.y, x * o.y + y * o.x); }
} u[N], v[N];
void fft(cpx *a, int n, int f) {
  int i, j, k;
  for (i = j = 0; i < n; ++i) {
    if (i > j) swap(a[i], a[j]);
    for (k = n >> 1; (j ^= k) < k; k >>= 1)
      ;
  }
  for (i = 1; i < n; i <<= 1) {
    cpx wn(cos(PI / i), f * sin(PI / i));
    for (j = 0; j < n; j += i << 1) {
      cpx w(1, 0);
      for (k = 0; k < i; ++k, w = w * wn) {
        cpx x = a[j + k], y = w * a[i + j + k];
        a[j + k] = x + y;
        a[i + j + k] = x - y;
      }
    }
  }
  if (f == -1)
    for (i = 0; i < n; ++i) a[i].x /= n, a[i].y /= n;
}
void work(int *a, int A, int id) {
  int n = 1;
  while (n <= A + lB) n <<= 1;
  for (int i = 0; i < A; ++i) u[i] = cpx(a[i], 0);
  for (int i = A; i < n; ++i) u[i] = cpx(0, 0);
  for (int i = 0; i < A - 1 - i; ++i) swap(u[i], u[A - 1 - i]);
  for (int i = 0; i < lB; ++i) v[i] = cpx(b[i], 0);
  for (int i = lB; i < n; ++i) v[i] = cpx(0, 0);
  fft(u, n, 1), fft(v, n, 1);
  for (int i = 0; i < n; ++i) u[i] = u[i] * v[i];
  fft(u, n, -1);
  for (int i = 0; i < lB; ++i) inB[id][i] = (A - round(u[i].x)) / 2;
}
int main() {
  scanf("%s", s);
  lA = strlen(s);
  for (int i = 0; i < lA; ++i) a[i] = (s[i] == '1' ? 1 : -1);
  scanf("%s", s);
  lB = strlen(s);
  for (int i = 0; i < lB; ++i) b[i] = (s[i] == '1' ? 1 : -1);
  S = sqrt(lA * log2(lA));
  B = ceil(1. * lA / S);
  for (int i = 0; i < B; ++i) {
    int l = i * S, r = min(lA, l + S);
    work(a + l, r - l, i);
  }
  int q;
  scanf("%d", &q);
  while (q--) {
    int l, r, len, res = 0;
    scanf("%d %d %d", &l, &r, &len);
    int p = l / S, q = (l + len - 1) / S;
    if (p == q) {
      for (int i = l; i < l + len; ++i) res += (a[i] != b[i - l + r]);
    } else {
      for (int i = l; i < (p + 1) * S; ++i) res += (a[i] != b[i - l + r]);
      for (int i = p + 1; i < q; ++i) res += (inB[i][(i + 1) * S - 1 - l + r]);
      for (int i = q * S; i < l + len; ++i) res += (a[i] != b[i - l + r]);
    }
    printf("%d\n", res);
  }
}
