#include <bits/stdc++.h>
using namespace std;
long long gcd(long long a, long long b) {
  if (a == 0) return b;
  return gcd(b % a, a);
}
bool isperfect(long long n) {
  long long y = sqrt(n);
  if (n % y == 0 && y * y == n) return true;
  return false;
}
bool comp(int a, int b) { return a > b; }
long long powi(long long a, long long b) {
  long long ans = 1;
  while (b > 0) {
    if (b & 1) ans = ans * a;
    b = b >> 1;
    a = a * a;
  }
  return ans;
}
bool isprime(long long n) {
  for (int i = 2; i * i <= n; i++) {
    if (n % i == 0) return false;
  }
  return true;
}
bool prime[10000000];
void seive() {
  prime[1] = true;
  for (int i = 2; i * i < 10000000; i++) {
    if (prime[i]) continue;
    for (int j = i * i; j < 10000000; j += i) {
      prime[j] = true;
    }
  }
}
bool ispalin(long long n) {
  long long ans = 0;
  int i = n;
  while (n > 0) {
    int k = n % 10;
    ans = 10 * ans + k;
    n = n / 10;
  }
  return (i == ans);
}
long long rev(long long n) {
  long long t = 1;
  while (t <= n) t *= 10;
  return (t - 1 - n) * n;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long l, r;
  cin >> l >> r;
  long long ans = max(rev(l), rev(r));
  long long repeat = 5;
  for (int i = 0; i < 9; i++) {
    if (l <= repeat && repeat <= r) {
      ans = max(ans, rev(repeat));
    }
    repeat *= 10;
  }
  cout << ans;
}
