#include <bits/stdc++.h>
using namespace std;
unsigned long long val1[11000];
unsigned long long val2[64][11000];
char a[210000], b[210000];
int cnt1[1500000];
int getnum(unsigned long long *val, int beg, int num) {
  int ret = 0;
  for (int i = 0; i < num; i++) {
    unsigned long long v = val1[i + beg] ^ val[i];
    ret += cnt1[v & 65535] + cnt1[(v >> 16) & 65535] + cnt1[(v >> 32) & 65535] +
           cnt1[(v >> 48)];
  }
  return ret;
}
int is[410000];
int beg1[410000], beg2[410000], L[410000], bel[410000];
int ans[410000];
int main() {
  int i, j, k, n;
  scanf("%s", a);
  scanf("%s", b);
  for (i = 1; i <= (1 << 20); i++) cnt1[i] = cnt1[i - (i & (-i))] + 1;
  for (i = 0; a[i]; i++)
    if (a[i] == '1') val1[i >> 6] |= 1ull << (i & 63);
  for (i = 0; i < 64; i++)
    for (j = 0; b[i + j]; j++)
      if (b[i + j] == '1') val2[i][j >> 6] |= 1ull << (j & 63);
  n = 400000;
  scanf("%d", &n);
  int cnt = 0;
  for (i = 1; i <= n; i++) {
    int b1, b2, len, e1, e2;
    scanf("%d%d%d", &b1, &b2, &len);
    e1 = b1 + len - 1;
    e2 = b2 + len - 1;
    while ((b1 & 63) && len >= 1) {
      if (a[b1] - b[b2]) ans[i]++;
      b1++, b2++, len--;
    }
    while ((e1 & 63) - 63 && len >= 1) {
      if (a[e1] - b[e2]) ans[i]++;
      e1--, e2--, len--;
    }
    if (len) {
      ++cnt;
      beg1[cnt] = b1 >> 6;
      beg2[cnt] = (b2 - (b2 & 63)) >> 6;
      L[cnt] = len / 64;
      bel[cnt] = i;
      is[cnt] = b2 & 63;
    }
  }
  for (i = 1; i <= cnt; i++)
    ans[bel[i]] += getnum(val2[is[i]] + beg2[i], beg1[i], L[i]);
  for (i = 1; i <= n; i++) printf("%d\n", ans[i]);
}
