func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MAX = 1000;   long long d[MAX + 10][3][3];   string s;   int n;   long long dyn() {     if (s[1] == 0) d[1][0][0] = 1;     d[1][0][2] = 1;     if (s[0] == 0 && s[1] == 1) d[1][1][1] = 1;     if (s[0] == 1) d[1][2][2] = 1;     for (int i = 1; i <= n - 2; i++)       for (int k = 0; k < 3; k++)         for (int l = 0; l < 3; l++)           for (int j = 0; j < 2; j++) {             if (l == 0 || l == 1) {               if (j == 0) {                 if (s[i + 1] == 0) d[i + 1][k][0] += d[i][k][l];               } else {                 d[i + 1][k][2] += d[i][k][l];               }             } else if (l == 2) {               if (j == 0) {                 if (s[i] == 0 && s[i + 1] == 1) d[i + 1][k][1] += d[i][k][l];               } else {                 if (s[i] == 1) d[i + 1][k][2] += d[i][k][l];               }             }           }     long long sum = 0;     for (int k = 0; k < 3; k++)       for (int l = 0; l < 3; l++) {         if (k == 0) {           if (l == 2) {             if (s[0] == 1 && s[n - 1] == 0) sum += d[n - 1][k][l];           } else {             if (s[0] == 0) sum += d[n - 1][k][l];           }         } else {           if (l == 2) {             if (s[n - 1] == 1) sum += d[n - 1][k][l];           } else {             sum += d[n - 1][k][l];           }         }       }     return sum;   }   int main() {     cin >> s;     n = (int)s.size();     for (int i = 0; i < n; i++) {       s[i] -=  A ;       s[i] = !s[i];     }     cout << dyn() << endl;     return 0;   }   