func_code_string: #include <bits/stdc++.h>   using namespace std;   long long bigmod(long long b, long long p, long long n) {     if (p == 0)       return 1;     else if (p % 2 == 0) {       long long half1 = bigmod(b, p / 2, n);       return ((half1 * half1) % n);     } else if (p % 2 == 1) {       long long p1 = b % n;       long long p2 = bigmod(b, p - 1, n);       return ((p1 * p2) % n);     }   }   long long pre11[1000010], pre21[1000010];   string s, s1;   const int p = 31;   const int m1 = 1e9 + 7;   long long MMI[1000010];   void com() {     MMI[0] = 1;     MMI[1] = bigmod(31, m1 - 2, m1);     for (long long i = 2; i <= s.size() + 3; i++)       MMI[i] = (MMI[i - 1] * MMI[1]) % m1;   }   void compute_hash() {     long long hash_value1 = 0, hash_value2 = 0;     long long p_pow1 = 1, p_pow2 = 1;     for (int i = 0; i < s.size(); i++) {       hash_value1 = (hash_value1 + (s[i] -  a  + 1) * p_pow1) % m1;       if (i < s1.size())         hash_value2 = (hash_value2 + (s1[i] -  a  + 1) * p_pow1) % m1;       p_pow1 = (p_pow1 * p) % m1;       pre11[i] = hash_value1;       if (i < s1.size()) pre21[i] = hash_value2;     }   }   void compute_hash2() {     long long hash_value1 = 0, hash_value2 = 0;     long long p_pow1 = 1, p_pow2 = 1;     for (int i = 0; i < s1.size(); i++) {       hash_value1 = (hash_value1 + (s1[i] -  a  + 1) * p_pow1) % m1;       p_pow1 = (p_pow1 * p) % m1;       pre21[i] = hash_value1;     }   }   int main() {     ios_base::sync_with_stdio(0);     cin.tie(0);     cout.tie(0);     ;     cin >> s >> s1;     com();     compute_hash();     vector<int> V;     for (int i = 0; i < s.size(); i++) {       long long p1, p2;       long long t1, t2;       if (i == 0) {         p2 = pre11[s.size() - 1] - pre11[0];         if (p2 < 0) p2 += m1;         p2 = ((p2 % m1) * MMI[i + 1]) % m1;         if (p2 == pre21[s1.size() - 1]) V.push_back(i + 1);       } else if (i == s.size() - 1) {         if (pre21[i - 1] == pre11[i - 1]) V.push_back(i + 1);       } else {         p2 = pre11[s.size() - 1] - pre11[i];         if (p2 < 0) p2 += m1;         p2 = ((p2 % m1) * MMI[i + 1]) % m1;         t2 = pre21[s1.size() - 1] - pre21[i - 1];         if (t2 < 0) t2 += m1;         t2 = ((t2 % m1) * MMI[i]) % m1;         if (p2 == t2 && pre21[i - 1] == pre11[i - 1]) V.push_back(i + 1);       }     }     cout << V.size() << endl;     for (int i = 0; i < V.size(); i++) cout << V[i] <<    ;   }   