func_code_string: #include <bits/stdc++.h>   using namespace std;   long long mod_v(long long num) {     if (num >= 0)       return (num % 1000000007);     else       return (num % 1000000007 + 1000000007) % 1000000007;   }   long long bigmod(long long b, long long p, long long m) {     long long res = 1 % m, x = b % m;     while (p) {       if (p & 1) res = (res * x) % m;       x = (x * x) % m;       p >>= 1;     }     return res;   }   class node {    public:     string str;     int a, b;     node() {}     node(string str, int a, int b) {       this->str = str;       this->a = a;       this->b = b;     }   };   vector<node> v;   map<string, bool> mark;   int main() {     int n, K, temp;     scanf( %d , &K);     n = 1 << K;     if (n == 1) {       printf( + n );       return 0;     }     string str =   ;     for (int i = 1; i <= n / 2; i++) str +=  + ;     for (int i = 1; i <= n / 2; i++) str +=  * ;     v.push_back(node(str, -1, -1));     mark[str] = 1;     int x = n / 4;     for (int i = 1; i <= x; i = i * 2) {       str =   ;       temp = 1;       for (int j = 1; j <= n; j += i) {         temp = (temp + 1) % 2;         for (int k = 0; k < i; k++) {           if (temp == 0)             str +=  + ;           else             str +=  * ;         }       }       v.push_back(node(str, -1, -1));       mark[str] = 1;     }     int ind = 0, len;     while (v.size() < n) {       bool flag = false;       for (int i = 0; i < v.size() && i < n; i++) {         if (v[ind].a == i || v[ind].b == i || ind == i) continue;         str =   ;         int o = 0, e = 0;         for (int j = 0; j < n; j++) {           if (v[ind].str[j] == v[i].str[j]) {             str +=  + ;             o++;           } else {             str +=  * ;             e++;           }         }         if (mark[str] == 1 || o != e) continue;         v.push_back(node(str, ind, i));         mark[str] = 1;         flag = true;       }       if (!flag) break;       ind++;     }     if (v.size() < n) {       str =   ;       for (int i = 0; i < n; i++) str +=  + ;       v.push_back(node(str, -1, -1));     }     for (int i = 0; i < v.size(); i++) cout << v[i].str <<   n ;   }   