func_code_string: #include <bits/stdc++.h>   using namespace std;   char s[5050], t[5050], goal[5050];   int cnt[200], l, l2;   bool dfs(int p, bool v) {     if (p == l2) {       if (v)         return puts(goal), 1;       else         return 0;     }     if (v) {       for (int i =  a ; i <  z  + 1; i++)         if (cnt[i] > 0) {           cnt[i] -= 1;           goal[p] = i;           return dfs(p + 1, v);         }       return 1;     } else {       for (int i =  a ; i <  z  + 1; i++)         if (cnt[i] > 0 && i >= t[p]) {           cnt[i] -= 1;           goal[p] = i;           if (dfs(p + 1, v | (i > t[p]))) return 1;           cnt[i] += 1;         }     }     return 0;   }   int main() {     scanf( %s%s , s, t);     l = strlen(t);     l2 = strlen(s);     for (int i = 0; i < l2; i++) cnt[s[i]]++;     if (!dfs(0, 0)) puts( -1 );   }   