func_code_string: #include <bits/stdc++.h>   using namespace std;   struct state {     state(int a, int b, int c, int d) : num(a), ind1(b), ind2(c), oper(d){};     int num;     int ind1, ind2;     int oper;   };   vector<state> ansState;   int n, ans = 100000;   map<set<int>, int> m;   vector<state> v;   void dfs() {     if (v[v.size() - 1].num == n) {       if (v.size() < ans) {         ans = v.size();         ansState = v;       }       return;     }     if (v.size() >= ans || v.size() > 5) return;     set<int> s;     for (int i = 0; i < v.size(); ++i) s.insert(v[i].num);     if (m[s]) return;     m.insert(make_pair(s, 1));     for (int i = 0; i < v.size(); ++i) {       for (int j = 1; j <= 3; ++j) {         int x = v[i].num * (1 << j);         if (x > n) break;         int flag = 1;         for (int k = 0; k < v.size(); ++k)           if (v[k].num == x) {             flag = 0;             break;           }         if (!flag) continue;         v.push_back(state(x, i, -1, j));         dfs();         v.pop_back();       }       for (int j = 0; j < v.size(); ++j)         for (int k = 0; k <= 3; ++k) {           int x = v[i].num + (1 << k) * v[j].num;           if (x > n) break;           int flag = 1;           for (int t = 0; t < v.size(); ++t)             if (v[t].num == x) {               flag = 0;               break;             }           if (flag) {             v.push_back(state(x, i, j, 4 + k));             dfs();             v.pop_back();           }         }     }   }   int Solution() {     cin >> n;     v.push_back(state(1, -1, -1, -1));     dfs();     cout << ans - 1 << endl;     for (int i = 1; i < ansState.size(); ++i) {       cout <<  lea e  << (char)( a  + i) <<  x, [ ;       if (ansState[i].oper < 4) {         cout << (1 << ansState[i].oper) <<  *e  << (char)( a  + ansState[i].ind1)              <<  x]  << endl;       }       if (ansState[i].oper == 4) {         cout <<  e  << (char)( a  + ansState[i].ind1) <<  x +                <<  e  << (char)( a  + ansState[i].ind2) <<  x]  << endl;       }       if (ansState[i].oper > 4) {         cout <<  e  << (char)( a  + ansState[i].ind1) <<  x +                << (1 << (ansState[i].oper - 4)) <<  *               <<  e  << (char)( a  + ansState[i].ind2) <<  x]  << endl;       }     }     return 0;   }   int main() {     Solution();     return 0;   }   