#include using namespace std; long long mem[20]; long long mem2[20]; string transf(int n) { stringstream ss; ss << n; string ret; ss >> ret; return ret; } long long brute (int a, int b) { long long ans = 0; for (int i = a; i <= b; i++) { if (i % 2 == 1) { string s = transf(i); for (int j = 0; j < (int) s.size(); j++) { ans += s[j] - '0'; } } } return ans; } long long calcAll(int len) { if (len == 0) { return 0; } long long ret = 0; for (int d = 1; d <= 9; d += 2) { ret += d; } mem[1] = ret; mem2[1] = ret; for (int i = 2; i <= len; i++) { long long crtSum = 0; long long ways = 1; for (int j = 0; j < i - 3; j++) { ways *= 10; } for (int last = 1; last <= 9; last += 2) { for (int first = 1; first <= 9; first++) { if (i == 2) { crtSum += (first + last) * ways; } else { for (int j = 1; j < i - 1; j++) { for (int d = 0; d <= 9; d++) { crtSum += (d + first + last) * ways; } } } } } long long crtSum2 = 0; for (int last = 1; last <= 9; last += 2) { for (int first = 0; first <= 9; first++) { if (i == 2) { crtSum2 += (first + last) * ways; } else { for (int j = 1; j < i - 1; j++) { for (int d = 0; d <= 9; d++) { crtSum2 += (d + first + last) * ways; } } } } } mem[i] = crtSum; mem2[i] = crtSum2; ret += crtSum; } return ret; } long long calcOdd(const string &s, int n) { long long ret = 0; long long prevSum = 0; for (int i = 0; i < n; i++) { int crt = s[i] - '0'; long long ways = 1; for (int j = i + 1; j < n; j++) { ways *= 10; } long long sum = mem2[n - i - 1]; for (int d = 0; d <= crt; d++) { if (i == 0 && d == 0) continue; if (i == n - 1 && d % 2 != 1) continue; if (i < n - 1 && d == crt) continue; ret += (d + prevSum) * max(1LL, ways / 2) + sum; // cerr << i << ' ' << d << ' ' << ret << endl; } prevSum += crt; } return ret; } long long solve(int n) { if (n <= 0) { return 0; } // cerr << n << endl; string s = transf(n); int len = (int) s.size(); // cerr << n << ' ' << len << endl; long long ret = calcAll(len - 1); // cerr << "all " << ret << endl; // cerr << "B: " << brute(1, 999) << endl; long long numOdd = calcOdd(s, len); // cerr << "odd " << numOdd << endl; ret += numOdd; // cerr << "In solve:" << endl; // cerr << ret << endl; // cerr << "B:" << brute(1, n) << endl; return ret; } int main() { // assert(freopen("odd.in", "r", stdin)); // assert(freopen("odd.out", "w", stdout)); cin.sync_with_stdio(false); int A, B; cin >> A >> B; long long ans = solve(B); ans -= solve(A - 1); cout << ans << endl; // cerr << ans << endl; // cerr << "B: " << brute(A, B) << endl; return 0; }