#include <bits/stdc++.h>

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;
}