#include <bits/stdc++.h>
using namespace std;
class cpx {
 public:
  double x, y;
  cpx(double p = 0, double q = 0) : x(p), y(q) {}
  cpx operator+(const cpx &o) { return cpx(x + o.x, y + o.y); }
  cpx operator-(const cpx &o) { return cpx(x - o.x, y - o.y); }
  cpx operator*(const cpx &o) {
    return cpx(x * o.x - y * o.y, x * o.y + y * o.x);
  }
  cpx conj() { return cpx(x, -y); }
};
const double PI = acos(-1);
void fft(vector<cpx> &a, int f) {
  int i, j, k, n = int(a.size());
  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;
}
int S = 2000;
vector<vector<int>> inB;
vector<int> a, b;
vector<cpx> A, B;
char s[1 << 18];
int main() {
  int m, n;
  scanf("%s", s);
  a.resize(strlen(s));
  for (n = 0; s[n]; ++n) a[n] = (s[n] == '1' ? 1 : -1);
  scanf("%s", s);
  b.resize(strlen(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;
  inB.assign((n + S - 1) / S, vector<int>(m, 0));
  for (N = 1; N <= S + m - 1; N <<= 1)
    ;
  A.resize(N), B.resize(N);
  for (i = 0; i < m; ++i) B[i] = cpx(b[i], 0);
  fft(B, 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] = cpx(a[j + l], 0);
    for (j = sz; j < N; ++j) A[j] = cpx(0, 0);
    fft(A, 1);
    for (j = 0; j < N; ++j) A[j] = A[j] * B[j];
    fft(A, -1);
    for (j = 0; j < m; ++j) inB[k][j] = (sz - (int)round(A[j].x)) >> 1;
  }
  scanf("%d", &Q);
  while (Q--) {
    int l, l2, len, r, k, le, res;
    cin >> l >> l2 >> len;
    r = l + len - 1, l2 -= l;
    k = l / S + 1, le = min(k * S - 1, r);
    res = 0;
    while (l <= le) res += (a[l] != b[l + l2]), ++l;
    while (l + S - 1 <= r) res += inB[k++][le + S + l2], l += S, le += S;
    while (l <= r) res += (a[l] != b[l + l2]), ++l;
    printf("%d\n", res);
  }
  return 0;
}
