#include
#include
using namespace std;
const int maxn = 25;
typedef long long ll;
vector v1, v2;
ll dp[maxn][4][4][4];
int sz;
ll rek(int at, int max_digit, int min_digit, int has_started) {
if(at == sz) {
return (ll) has_started;
}
if(dp[at][max_digit][min_digit][has_started] != -1) {
return dp[at][max_digit][min_digit][has_started];
}
ll res = 0LL;
int tmp_min_digit = v1[at];
if(min_digit) {
tmp_min_digit = 0;
}
int tmp_max_digit = v2[at];
if(max_digit) {
tmp_max_digit = 9;
}
for(int i = tmp_min_digit; i <= tmp_max_digit; i++) {
ll tmp = 1LL;
int tmp_started = (has_started or i > 0);
if(has_started or i > 0) {
tmp = (ll) i;
}
int m1 = min_digit;
if(min_digit == 0) {
if(i > tmp_min_digit) {
m1 = 1;
}
}
int m2 = max_digit;
if(max_digit == 0) {
if(i < tmp_max_digit) {
m2 = 1;
}
}
res = max(res, rek(at + 1, m2 , m1, tmp_started) * tmp);
}
return dp[at][max_digit][min_digit][has_started] = res;
}
ll backtrack(int at, int max_digit, int min_digit, int has_started) {
if(at == sz) {
return has_started;
}
ll res = dp[at][max_digit][min_digit][has_started];
int tmp_min_digit = v1[at];
if(min_digit) {
tmp_min_digit = 0;
}
int tmp_max_digit = v2[at];
if(max_digit) {
tmp_max_digit = 9;
}
for(int i = tmp_min_digit; i <= tmp_max_digit; i++) {
ll tmp = 1LL;
int tmp_started = (has_started or i > 0);
if(has_started or i > 0) {
tmp = (ll) i;
}
int m1 = min_digit;
if(min_digit == 0) {
if(i > tmp_min_digit) {
m1 = 1;
}
}
int m2 = max_digit;
if(max_digit == 0) {
if(i < tmp_max_digit) {
m2 = 1;
}
}
if(res == rek(at + 1, m2 , m1, tmp_started) * tmp) {
if(tmp_started) {
cout << i;
}
backtrack(at + 1, m2 , m1, tmp_started);
break;
}
}
return res;
}
int main(){
ll a, b;
cin >> a >> b;
memset(dp, -1, sizeof dp);
while(a) {
v1.push_back(a % 10);
a /= 10;
}
while(b) {
v2.push_back(b % 10);
b /= 10;
}
if(v1.size() < v2.size()) {
while(v1.size() < v2.size()) {
v1.push_back(0);
}
}
if(v2.size() < v1.size()) {
while(v2.size() < v1.size()) {
v2.push_back(0);
}
}
reverse(v1.begin(), v1.end());
reverse(v2.begin(), v2.end());
sz = max((int) v1.size(), (int) v2.size());
rek(0, 0, 0, 0) ;
backtrack(0, 0, 0, 0);
return 0;
}