#define _CRT_SECURE_NO_WARNINGS #define _SILENCE_CXX17_C_HEADER_DEPRECATION_WARNING #include using namespace std; typedef long long ll; int num[12], na[20], nb[20]; int intlen(ll x) { int len = 0; while (x) x /= 10, len++; return len; } int main() { ll a, b; scanf("%lld%lld", &a, &b); ll q = a; while (a) { int r = a % 10; a /= 10; num[r]++; } if (q == b) { printf("%lld", b); return 0; } int lena = intlen(q); int lenb = intlen(b); if (lena < lenb) { for (int j = 9; j >= 0; j--) { while (num[j]) { num[j]--; printf("%d", j); } } return 0; } if (lena == lenb) { int temb = lenb; while (b) { int r = b % 10; b /= 10; nb[temb--] = r; } for (int i = 1; i <= lena; i++) { if (num[nb[i]]) { num[nb[i]]--; na[i] = nb[i]; } else { bool fl = 0; while (!fl) { for (int j = nb[i] - 1; j >= 0; j--) { if (num[j]) { na[i] = j; num[j]--; for (int l = 1; l <= i; l++) printf("%d", na[l]); for (int kk = 9; kk >= 0; kk--) { while (num[kk]) { printf("%d", kk); num[kk]--; } } return 0; } } i = i - 1; num[na[i]]++; } } } for (int i = 1; i <= lena; i++) printf("%d", na[i]); } return 0; }