#include <bits/stdc++.h>
using namespace std;
int popcnt[1 << 16];
unsigned long long a_bits[3200];
unsigned long long b_bits[64][3200];
inline void build(unsigned long long *bits, const string &s) {
  const int n = s.size();
  for (int i = 0; i < n; ++i) {
    bits[i >> 6] |= static_cast<unsigned long long>(s[i] - '0') << (i & 63);
  }
}
inline int fast_popcnt(unsigned long long x) {
  return popcnt[x >> 48] + popcnt[(x >> 32) & 0xffff] +
         popcnt[(x >> 16) & 0xffff] + popcnt[x & 0xffff];
}
int main() {
  ios_base::sync_with_stdio(false);
  for (int i = 0; i < (1 << 16); ++i) {
    popcnt[i] = __builtin_popcount(i);
  }
  string a, b;
  cin >> a >> b;
  build(a_bits, a);
  build(b_bits[0], b);
  for (int i = 1; i < 64; ++i) {
    const int m = (b.size() + 63) / 64;
    b_bits[i][0] = (b_bits[i - 1][0] << 1);
    for (int j = 1; j <= m; ++j) {
      b_bits[i][j] = (b_bits[i - 1][j] << 1) | (b_bits[i - 1][j - 1] >> 63);
    }
  }
  int q;
  cin >> q;
  while (q--) {
    int p1, p2, len;
    cin >> p1 >> p2 >> len;
    const int k = (64 - ((p2 - p1) & 63)) & 63;
    const unsigned long long *s = a_bits + (p1 >> 6);
    const unsigned long long *t = b_bits[k] + ((p2 + k) >> 6);
    const int offset = p1 & 63;
    int answer = 0;
    if (offset + len < 64) {
      const unsigned long long mask =
          ((1ull << (offset + len)) - 1) & ~((1ull << offset) - 1);
      answer = fast_popcnt((*s ^ *t) & mask);
    } else {
      const unsigned long long hmask = ~((1ull << offset) - 1);
      answer += fast_popcnt((*s ^ *t) & hmask);
      len -= (64 - offset);
      ++s;
      ++t;
      while (len >= 64) {
        answer += fast_popcnt(*s ^ *t);
        len -= 64;
        ++s;
        ++t;
      }
      const unsigned long long tmask = (1ull << len) - 1;
      answer += fast_popcnt((*s ^ *t) & tmask);
    }
    cout << answer << "\n";
  }
  return 0;
}
