#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int MAXN = 100005;
char a[200001], b[200001];
unsigned int A[32][6250], B[32][6250];
int Bits[1 << 16];
inline int builtin_popcount(int x) {
  int res = 0;
  while (x) {
    res++;
    x &= (x - 1);
  }
  return res;
}
inline int bitcounts(unsigned int x) {
  return Bits[x >> 16] + Bits[x & ((1 << 16) - 1)];
}
int query(int p1, int p2, int len) {
  int b1 = p1 / 32, b2 = p2 / 32;
  unsigned int *c1 = A[p1 & 31];
  unsigned int *c2 = B[p2 & 31];
  int i = 0, res = 0;
  while (i + 32 <= len) {
    res += bitcounts(c1[b1++] ^ c2[b2++]);
    i += 32;
  }
  len -= i;
  res += bitcounts((c1[b1] ^ c2[b2]) & ((1 << len) - 1));
  return res;
}
void solve() {
  for (int i = 0; i < 1 << 16; i++) Bits[i] = builtin_popcount(i);
  scanf("%s%s", a, b);
  int n = strlen(a);
  for (int i = 0; i < 32; i++)
    for (int j = 0; i + j < n; j++)
      if (a[i + j] == '1') A[i][j >> 5] |= (1U << (j & 31));
  n = strlen(b);
  for (int i = 0; i < 32; i++)
    for (int j = 0; i + j < n; j++)
      if (b[i + j] == '1') B[i][j >> 5] |= (1U << (j & 31));
  int q, p1, p2, len;
  scanf("%d", &q);
  while (q--) {
    scanf("%d%d%d", &p1, &p2, &len);
    printf("%d\n", query(p1, p2, len));
  }
}
int main() {
  solve();
  return 0;
}
