#include <bits/stdc++.h>
using namespace std;
const double PI = acos(-1.0);
struct Virt {
  double r, i;
  Virt(double r = 0.0, double i = 0.0) {
    this->r = r;
    this->i = i;
  }
  Virt operator+(const Virt &x) { return Virt(r + x.r, i + x.i); }
  Virt operator-(const Virt &x) { return Virt(r - x.r, i - x.i); }
  Virt operator*(const Virt &x) {
    return Virt(r * x.r - i * x.i, i * x.r + r * x.i);
  }
};
void Rader(Virt F[], int len) {
  int i, j, k;
  for (i = 1, j = len / 2; i < len - 1; i++) {
    if (i < j) swap(F[i], F[j]);
    k = len / 2;
    while (j >= k) {
      j -= k;
      k >>= 1;
    }
    if (j < k) j += k;
  }
}
void fft(Virt F[], int len, int on) {
  Rader(F, len);
  for (int h = 2; h <= len; h <<= 1) {
    Virt wn(cos(-on * 2 * PI / h), sin(-on * 2 * PI / h));
    for (int j = 0; j < len; j += h) {
      Virt w(1, 0);
      for (int k = j; k < j + h / 2; k++) {
        Virt u = F[k];
        Virt t = w * F[k + h / 2];
        F[k] = u + t;
        F[k + h / 2] = u - t;
        w = w * wn;
      }
    }
  }
  if (on == -1)
    for (int i = 0; i < len; i++) F[i].r /= len;
}
int S = 2000;
int inB[105][1 << 18];
int a[1 << 18], b[1 << 18];
char s[1 << 18];
int main() {
  int m, n;
  scanf("%s", s);
  for (n = 0; s[n]; ++n) a[n] = (s[n] == '1' ? 1 : -1);
  scanf("%s", s);
  for (m = 0; s[m]; ++m) b[m] = (s[m] == '1' ? 1 : -1);
  int i, j, k, res = 0;
  int l, r, p, q, N, Q, sz;
  for (N = 1; N <= S + m - 1; N <<= 1)
    ;
  Virt A[N], B[N];
  for (i = 0; i < m; ++i) B[i] = Virt(b[i], 0);
  fft(B, N, 1);
  for (i = 0, k = 0; i < n; i += S, ++k) {
    l = i, r = min(i + S, n), sz = r - l;
    for (j = 0; j < sz; ++j) A[sz - 1 - j] = Virt(a[j + l], 0);
    for (j = sz; j < N; ++j) A[j] = Virt(0, 0);
    fft(A, N, 1);
    for (j = 0; j < N; ++j) A[j] = A[j] * B[j];
    fft(A, N, -1);
    for (j = 0; j < m; ++j) inB[k][j] = (sz - (int)round(A[j].r)) >> 1;
  }
  scanf("%d", &Q);
  while (Q--) {
    int l2, len;
    scanf("%d %d %d", &l, &l2, &len), r = l + len - 1;
    p = l / S, q = r / S, res = 0;
    if (p == q) {
      for (i = l; i <= r; ++i) res += (a[i] != b[i - l + l2]);
    } else {
      for (i = l; i < (p + 1) * S; ++i) res += (a[i] != b[i - l + l2]);
      for (i = p + 1; i < q; ++i) res += (inB[i][(i + 1) * S - 1 - l + l2]);
      for (i = q * S; i <= r; ++i) res += (a[i] != b[i - l + l2]);
    }
    printf("%d\n", res);
  }
  return 0;
}
