#include <bits/stdc++.h>
using namespace std;
#define int long long
string A, B;
int dp[20][2][2][2][2]; // dp[桁][Aより大きい][B未満][4を含む][9を含む]
int rec(int digit, int moreA, int lessB, int four, int nine) {
if (digit >= B.size()) {
return four || nine;
}
if (dp[digit][moreA][lessB][four][nine] != -1) {
return dp[digit][moreA][lessB][four][nine];
}
int high = (lessB ? 9 : B[digit] - '0');
int low = (moreA ? 0 : A[digit] - '0');
int ret = 0;
for (int num = low; num <= high; num++) {
int t = rec(digit + 1, moreA || num > low, lessB || num < high, four || (num == 4), nine || (num == 9));
ret += t;
}
return dp[digit][moreA][lessB][four][nine] = ret;
}
signed main() {
cin >> A >> B;
// Aの足りない分を0で埋める
int diff = B.size() - A.size();
string zero = "";
for (int i = 0; i < diff; i++) {
zero += "0";
}
A = zero + A;
memset(dp, -1, sizeof(dp));
// 再帰に投げる
int ans = rec(0, 0, 0, 0, 0);
cout << ans << endl;
return 0;
}