func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long p = 131;   const int N = 210000;   int n, m;   char sr1[N], sr2[N];   unsigned long long hash1[N][28], hash2[N][28], Q[N];   int Ans[N], ans;   int main() {     int i, j, k, x, y;     cin >> n >> m;     scanf( %s%s , sr1 + 1, sr2 + 1);     Q[0] = 1;     for (i = 1; i <= n; ++i) Q[i] = Q[i - 1] * p;     for (j = 0; j <= 25; ++j)       for (i = 1; i <= n; ++i) {         hash1[i][j] = hash1[i - 1][j] * p;         if (sr1[i] -  a  == j) hash1[i][j] += 1;       }     for (j = 0; j <= 25; ++j)       for (i = 1; i <= m; ++i) {         hash2[i][j] = hash2[i - 1][j] * p;         if (sr2[i] -  a  == j) hash2[i][j] += 1;       }     int cnt;     for (i = 1; i <= n - m + 1; ++i) {       cnt = 0;       for (x = 0; x < 26; ++x) {         if (cnt != x) break;         for (y = 0; y < 26; ++y)           if (hash2[m][x] == hash1[i + m - 1][y] - hash1[i - 1][y] * Q[m])             if (hash2[m][y] == hash1[i + m - 1][x] - hash1[i - 1][x] * Q[m]) {               cnt++;               break;             }       }       if (cnt == 26) Ans[++ans] = i;     }     cout << ans << endl;     for (i = 1; i < ans; ++i) printf( %d  , Ans[i]);     if (ans != 0) printf( %d , Ans[ans]);   }   