#include <iostream>
#include <bits/stdc++.h>
using namespace std;
bool input_numbers(long long &a, long long &b) {
string line;
getline(cin, line);
stringstream ss(line);
if (!(ss >> a >> b)) {
cout << " Invalid input (not two integers)!" << endl;
return false;
}
string extra;
if (ss >> extra) {
cout << "Invalid input: Only enter exactly 2 numbers per line!" << endl;
return false;
}
if (a < 1 || b > 100000000 || a > b) {
cout << "Invalid input .Please enter numbers within the range and separated by white space (1 <= a <= b <= 100,000,000)!" << endl;
return false;
}
return true;
}
long long count_claps_upto(long long n){
if(n <=0) return 0;
string s = to_string (n);
long long total = 0 ;
int L = s.length ();
for(int i = 0 ; i< L ; i++){
long long place = pow(10 , L - i -1);
int digit = s[i] -'0'; // convert char to int ;
long long left = i > 0 ? stoll(s.substr (0 , i )) : 0 ;
total += left*place*3;
for(int d = 0 ; d < digit ; d++){
if(d == 3 || d == 6 || d == 9) total+= place ;
}
if(digit == 3 || digit == 6 || digit == 9 ){
long long right = (i == L -1) ? 1 : ( stoll(s.substr (i+1)) +1) ;
total += right ;
}
}
return total ;
}
int main()
{
long long a, b;
if (!input_numbers(a, b)) {
return 1;
}
long long result = count_claps_upto(b) - count_claps_upto(a - 1);
cout << result << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmJvb2wgaW5wdXRfbnVtYmVycyhsb25nIGxvbmcgJmEsIGxvbmcgbG9uZyAmYikgewogIHN0cmluZyBsaW5lOwogIGdldGxpbmUoY2luLCBsaW5lKTsKICBzdHJpbmdzdHJlYW0gc3MobGluZSk7CiAgaWYgKCEoc3MgPj4gYSA+PiBiKSkgewogICAgICBjb3V0IDw8ICIgSW52YWxpZCBpbnB1dCAobm90IHR3byBpbnRlZ2VycykhIiA8PCBlbmRsOwogICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgc3RyaW5nIGV4dHJhOwogIGlmIChzcyA+PiBleHRyYSkgewogICAgICBjb3V0IDw8ICJJbnZhbGlkIGlucHV0OiBPbmx5IGVudGVyIGV4YWN0bHkgMiBudW1iZXJzIHBlciBsaW5lISIgPDwgZW5kbDsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIGlmIChhIDwgMSB8fCBiID4gMTAwMDAwMDAwIHx8IGEgPiBiKSB7CiAgICAgIGNvdXQgPDwgIkludmFsaWQgaW5wdXQgLlBsZWFzZSBlbnRlciBudW1iZXJzIHdpdGhpbiB0aGUgcmFuZ2UgYW5kIHNlcGFyYXRlZCBieSB3aGl0ZSBzcGFjZSAoMSA8PSBhIDw9IGIgPD0gMTAwLDAwMCwwMDApISIgPDwgZW5kbDsKICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogIHJldHVybiB0cnVlOwp9Cgpsb25nIGxvbmcgY291bnRfY2xhcHNfdXB0byhsb25nIGxvbmcgbil7CiAgaWYobiA8PTApIHJldHVybiAwOwogIHN0cmluZyBzID0gdG9fc3RyaW5nIChuKTsKICBsb25nIGxvbmcgdG90YWwgPSAwIDsKICBpbnQgTCA9IHMubGVuZ3RoICgpOwoKICBmb3IoaW50IGkgPSAwIDsgaTwgTCA7IGkrKyl7CiAgICAgIGxvbmcgbG9uZyBwbGFjZSA9IHBvdygxMCAsIEwgLSBpIC0xKTsKICAgICAgaW50IGRpZ2l0ID0gc1tpXSAtJzAnOyAgLy8gY29udmVydCBjaGFyIHRvIGludCA7CiAgICAgIGxvbmcgbG9uZyBsZWZ0ID0gaSA+IDAgPyAgc3RvbGwocy5zdWJzdHIgKDAgLCBpICkpICA6ICAwICA7CiAgICAgIHRvdGFsICs9IGxlZnQqcGxhY2UqMzsKICAgICAgZm9yKGludCBkID0gMCA7IGQgPCBkaWdpdCA7IGQrKyl7CiAgICAgICAgICBpZihkID09IDMgfHwgZCA9PSA2IHx8IGQgPT0gOSkgdG90YWwrPSBwbGFjZSA7CiAgICAgICAgfQogICAgICBpZihkaWdpdCA9PSAzIHx8IGRpZ2l0ID09IDYgfHwgZGlnaXQgPT0gOSApewogICAgICAgICAgbG9uZyBsb25nIHJpZ2h0ID0gICAoaSA9PSBMIC0xKSAgPyAgMSAgOiAoIHN0b2xsKHMuc3Vic3RyIChpKzEpKSArMSkgOwogICAgICAgICAgdG90YWwgKz0gcmlnaHQgOwogICAgICAgIH0KICAgIH0KICByZXR1cm4gdG90YWwgOwp9CmludCBtYWluKCkKewogIGxvbmcgbG9uZyBhLCBiOwogIGlmICghaW5wdXRfbnVtYmVycyhhLCBiKSkgewogICAgICByZXR1cm4gMTsKICAgIH0KICBsb25nIGxvbmcgcmVzdWx0ID0gY291bnRfY2xhcHNfdXB0byhiKSAtIGNvdW50X2NsYXBzX3VwdG8oYSAtIDEpOwogIGNvdXQgPDwgcmVzdWx0IDw8IGVuZGw7CiAgcmV0dXJuIDA7Cn0K