func_code_string: #include <bits/stdc++.h>   using namespace std;   char str1[1000005], str2[1000005];   int cnt[3];   unsigned long long bao[1000005], base[1000005];   long long base2[1000005], da[1000005];   int main() {     int n, m, i, j, ans = 0;     scanf( %s , str1 + 1);     scanf( %s , str2 + 1);     n = strlen(str1 + 1);     m = strlen(str2 + 1);     base[0] = 1;     base2[0] = 1;     for (i = 1; i <= m; i++) {       base[i] = base[i - 1] * 233;       bao[i] = bao[i - 1] * 233 + str2[i] -  a  + 1;       base2[i] = base2[i - 1] * 2333 % 1000000007;       da[i] = (da[i - 1] * 2333 + str2[i] -  a  + 1) % 1000000007;     }     for (i = 1; i <= n; i++) {       cnt[str1[i] -  0 ]++;     }     int f = str1[1] -  0 ;     for (i = 1; i <= m / cnt[f]; i++) {       int w = m - cnt[f] * i;       if (w % cnt[1 - f] != 0 || w == 0) continue;       w /= cnt[1 - f];       unsigned long long a1 = bao[i], a2 = 114514;       long long b1 = da[i], b2 = 114514;       int now = i;       for (j = 2; j <= n; j++) {         if (str1[j] == f +  0 ) {           if (a1 != bao[now + i] - bao[now] * base[i]) break;           if (b1 !=               (da[now + i] - 1LL * da[now] * base2[i] % 1000000007 + 1000000007) %                   1000000007)             break;           now += i;         } else {           if (a2 == 114514 && b2 == 114514) {             a2 = bao[now + w] - bao[now] * base[w];             b2 = (da[now + w] - 1LL * da[now] * base2[w] % 1000000007 +                   1000000007) %                  1000000007;           } else {             if (a2 != bao[now + w] - bao[now] * base[w]) break;             if (b2 != (da[now + w] - 1LL * da[now] * base2[w] % 1000000007 +                        1000000007) %                           1000000007)               break;           }           now += w;         }       }       if (j > n) {         if (a1 != a2 && b1 != b2) ans++;       }     }     cout << ans << endl;   }   