func_code_string: #include <bits/stdc++.h>   #pragma GCC target( sse )   const int maxn = 2e5 + 5;   struct 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;   }   