#include <bits/stdc++.h>
#pragma GCC optimize(2)
const int maxn = 2e5 + 5;
struct IO {
  IO(){};
  char c;
  inline char gc() {
    static char buf[maxn], *p1 = buf, *p2 = buf;
    return p1 == p2 && (p2 = (p1 = buf) + fread(buf, 1, maxn, stdin), p1 == p2)
               ? EOF
               : *p1++;
  }
  template <typename T>
  inline IO &operator>>(T &_) {
    _ = 0;
    bool f = 1;
    c = gc();
    while (c < '0' || c > '9') {
      if (c == '-') f = 0;
      c = gc();
    }
    while (c >= '0' && c <= '9') {
      _ = _ * 10 + c - 48;
      c = gc();
    }
    if (!f) _ = -_;
    return *this;
  }
  char buf[maxn];
  int p = 0;
  ~IO() { fwrite(buf, 1, p, stdout); }
  inline void pc(const char &c) {
    buf[p++] = c;
    if (p == maxn) fwrite(buf, 1, maxn, stdout), p = 0;
  }
  template <typename T>
  inline IO &operator<<(T x) {
    if (!x) {
      pc(48);
      pc('\n');
      return *this;
    }
    static int wt[41], len;
    len = 0;
    if (x < 0) {
      pc('-');
      x = -x;
    }
    for (; x; x /= 10) {
      wt[++len] = x % 10;
    }
    while (len) {
      pc(wt[len--] + 48);
    }
    pc('\n');
    return *this;
  }
  inline IO &operator>>(char s[]) {
    c = gc();
    int len = -1;
    while (c == ' ' || c == '\n' || c == '\r') c = gc();
    while (c != ' ' && c != '\n' && c != '\r' && c != '\0' && c != EOF) {
      s[++len] = c;
      c = gc();
    }
    s[++len] = '\0';
    return *this;
  }
} io;
int n, m, q;
char s1[maxn], s2[maxn];
unsigned long long b1[64][(maxn >> 6) + 64], b2[64][(maxn >> 6) + 64];
void build() {
  for (int i = 0; i < 64; i++) {
    for (int j = i; j < n; j += 64) {
      for (int k = 0; k < 64; k++)
        b1[i][j >> 6] += (1ll << k) * (s1[j + k] - 48);
    }
  }
  for (int i = 0; i < 64; i++) {
    for (int j = i; j < m; j += 64) {
      for (int k = 0; k < 64; k++)
        b2[i][j >> 6] += (1ll << k) * (s2[j + k] - 48);
    }
  }
}
int main() {
  io >> s1 >> s2;
  n = strlen(s1), m = strlen(s2);
  build();
  io >> q;
  while (q--) {
    int p1, p2, len;
    io >> p1 >> p2 >> len;
    int now = 0, a1 = 0, a2 = 0, a3 = 0, a4 = 0, a5 = 0, a6 = 0, a7 = 0, a8 = 0;
    unsigned long long *f1 = b1[p1 & 63] + (p1 >> 6),
                       *f2 = b2[p2 & 63] + (p2 >> 6);
    for (; now + 511 < len; now += 512, f1 += 8, f2 += 8) {
      a1 += __builtin_popcountll(f1[0] ^ f2[0]);
      a2 += __builtin_popcountll(f1[1] ^ f2[1]);
      a3 += __builtin_popcountll(f1[2] ^ f2[2]);
      a4 += __builtin_popcountll(f1[3] ^ f2[3]);
      a5 += __builtin_popcountll(f1[4] ^ f2[4]);
      a6 += __builtin_popcountll(f1[5] ^ f2[5]);
      a7 += __builtin_popcountll(f1[6] ^ f2[6]);
      a8 += __builtin_popcountll(f1[7] ^ f2[7]);
    }
    for (; now < len; now++) a1 += (s1[p1 + now] - 48) ^ (s2[p2 + now] - 48);
    io << a1 + a2 + a3 + a4 + a5 + a6 + a7 + a8;
  }
  return 0;
}
