#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; int A, B; long long put[15]; long long solve (int lim) { if (lim == 0) return 0; int nr = 0, v[109]; while (lim) v[++nr] = lim % 10, lim /= 10; reverse (v + 1, v + nr + 1); int bef = 0; long long ans = 0; for (int i=1; i<=nr; i++) { int aft = 0; for (int p=i + 1; p<=nr; p++) aft = aft * 10 + v[p]; for (int j=1; j<10; j++) { long long coef = bef; if (i < nr) coef = 1LL * coef * put[nr - i - 1] * 5; else coef = 1LL * coef * (j % 2 == 1); if (i == nr && j % 2 == 0) continue; if (j <= v[i]) { if (i != nr) { if (j == v[i]) coef += (aft + 1) / 2; else coef += 1LL * put[nr - i - 1] * 5; } else coef ++; } // if (coef != 0) printf ("%d %d de %lld ori\n", i, j, coef); ans += 1LL * j * coef; } bef = bef * 10 + v[i]; } return ans; } int brute (int val) { int sol = 0; for (int i=1; i<=val; i+=2) { int aux = i; while (aux) sol += aux % 10, aux /= 10; } return sol; } void Eval () { int sol = 0; for (int i=1; i<=10000000; i++) { if (i & 1) { int aux = i; while (aux) sol += aux % 10, aux /= 10; } if (sol != solve (i)) { printf ("wa %d\n", i); return ; } } } int main() { //freopen ("input", "r", stdin); //freopen ("output", "w", stdout); scanf ("%d %d", &A, &B); put[0] = 1; for (int i=1; i<=10; i++) put[i] = 1LL * put[i - 1] * 10; //printf ("%d\n", brute (B)); //Eval (); //return 0; long long ans = solve (B) - solve (A - 1); printf ("%lld\n", ans); return 0; }