#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
int bi[1 << 16];
unsigned a[32][maxn / 32 + 10], b[32][maxn / 32 + 10];
char sa[maxn], sb[maxn];
static __inline int getBit(unsigned n) {
  int ret;
  __asm__("popcnt %0, %1" : "=r"(ret) : "r"(n));
  return ret;
}
int getAns(int p, int q, int len) {
  int x = p >> 5, y = q >> 5;
  int u = p & 31, v = q & 31;
  int ans = 0, i = 0;
  while (i + 32 <= len) {
    ans += getBit(a[u][x] ^ b[v][y]);
    x++, y++;
    i += 32;
  }
  len -= i;
  return ans += getBit((a[u][x] ^ b[v][y]) & ((1 << len) - 1));
}
int main() {
  for (int i = 1; i < (1 << 16); i++) bi[i] = bi[i >> 1] + (i & 1);
  scanf("%s%s", sa, sb);
  int n = strlen(sa);
  int m = strlen(sb);
  for (int i = 0; i < 32; i++) {
    for (int j = 0; j + i < n; j++)
      if (sa[i + j] == '1') a[i][j >> 5] |= (1LL << (j & 31));
  }
  for (int i = 0; i < 32; i++) {
    for (int j = 0; j + i < m; j++)
      if (sb[i + j] == '1') b[i][j >> 5] |= (1LL << (j & 31));
  }
  int qq, p, q, len;
  scanf("%d", &qq);
  while (qq--) {
    scanf("%d%d%d", &p, &q, &len);
    printf("%d\n", getAns(p, q, len));
  }
  cerr << "Time elapsed: " << (double)clock() / CLOCKS_PER_SEC * 1000 << " ms"
       << endl;
  ;
  return 0;
}
