func_code_string: #include <bits/stdc++.h>   using namespace std;   const long long maxn = 123;   long long a[maxn], b[maxn], n, m;   char s[maxn];   long long vis[20], t[20], sb[maxn];   void dfs(long long stp, long long sa) {     if (sa > sb[stp + 1]) return;     if (stp == 0) {       cout << sa << endl;       exit(0);     }     if (stp > n) {       dfs(stp - 1, sa);       return;     }     for (long long i = 9; i >= 0; i--)       if (vis[i] && sa * 10 + i <= sb[stp]) {         --vis[i];         dfs(stp - 1, sa * 10 + i);         ++vis[i];       }   }   int main() {     long long i;     scanf( %s , s + 1);     n = strlen(s + 1);     for (i = 1; i <= n; i++) a[i] = s[n - i + 1] -  0 ;     scanf( %s , s + 1);     m = strlen(s + 1);     for (i = 1; i <= m; i++) b[i] = s[m - i + 1] -  0 ;     for (i = m; i; i--) sb[i] = sb[i + 1] * 10 + b[i];     for (i = 1; i <= n; i++) ++vis[a[i]];     dfs(m, 0);     return 0;   }   