const fs = require('fs');
const input = fs.readFileSync(0, 'utf8').trim().split(/\s+/);
const a = Number(input[0]);
const b = Number(input[1]);
const countClaps = (n) => {
if (n < 1) return 0;
const s = String(n);
const memo = new Map();
const dp = (pos, tight, leading) => {
if (pos === s.length) {
return [1, 0];
}
const key = `${pos}|${tight ? 1 : 0}|${leading ? 1 : 0}`;
if (memo.has(key)) return memo.get(key);
const limit = tight ? Number(s[pos]) : 9;
let totalNumbers = 0;
let totalClaps = 0;
for (let d = 0; d <= limit; d++) {
const newTight = tight && d === limit;
const newLeading = leading && d === 0;
const [cnt, clp] = dp(pos + 1, newTight, newLeading);
totalNumbers += cnt;
totalClaps += clp;
if (!newLeading && (d === 3 || d === 6 || d === 9)) {
totalClaps += cnt;
}
}
const result = [totalNumbers, totalClaps];
memo.set(key, result);
return result;
};
const [_n, totalClapsFrom0ToN] = dp(0, true, true);
return totalClapsFrom0ToN;
};
const solve369 = (a, b) => countClaps(b) - countClaps(a - 1);
console.log(solve369(a, b));
Y29uc3QgZnMgPSByZXF1aXJlKCdmcycpOwoKY29uc3QgaW5wdXQgPSBmcy5yZWFkRmlsZVN5bmMoMCwgJ3V0ZjgnKS50cmltKCkuc3BsaXQoL1xzKy8pOwpjb25zdCBhID0gTnVtYmVyKGlucHV0WzBdKTsKY29uc3QgYiA9IE51bWJlcihpbnB1dFsxXSk7Cgpjb25zdCBjb3VudENsYXBzID0gKG4pID0+IHsKICAgIGlmIChuIDwgMSkgcmV0dXJuIDA7CiAgICBjb25zdCBzID0gU3RyaW5nKG4pOwoKICAgIGNvbnN0IG1lbW8gPSBuZXcgTWFwKCk7CgogICAgY29uc3QgZHAgPSAocG9zLCB0aWdodCwgbGVhZGluZykgPT4gewogICAgICAgIGlmIChwb3MgPT09IHMubGVuZ3RoKSB7CiAgICAgICAgICAgIHJldHVybiBbMSwgMF07CiAgICAgICAgfQoKICAgICAgICBjb25zdCBrZXkgPSBgJHtwb3N9fCR7dGlnaHQgPyAxIDogMH18JHtsZWFkaW5nID8gMSA6IDB9YDsKICAgICAgICBpZiAobWVtby5oYXMoa2V5KSkgcmV0dXJuIG1lbW8uZ2V0KGtleSk7CgogICAgICAgIGNvbnN0IGxpbWl0ID0gdGlnaHQgPyBOdW1iZXIoc1twb3NdKSA6IDk7CiAgICAgICAgbGV0IHRvdGFsTnVtYmVycyA9IDA7CiAgICAgICAgbGV0IHRvdGFsQ2xhcHMgPSAwOwoKICAgICAgICBmb3IgKGxldCBkID0gMDsgZCA8PSBsaW1pdDsgZCsrKSB7CiAgICAgICAgICAgIGNvbnN0IG5ld1RpZ2h0ID0gdGlnaHQgJiYgZCA9PT0gbGltaXQ7CiAgICAgICAgICAgIGNvbnN0IG5ld0xlYWRpbmcgPSBsZWFkaW5nICYmIGQgPT09IDA7CgogICAgICAgICAgICBjb25zdCBbY250LCBjbHBdID0gZHAocG9zICsgMSwgbmV3VGlnaHQsIG5ld0xlYWRpbmcpOwoKICAgICAgICAgICAgdG90YWxOdW1iZXJzICs9IGNudDsKICAgICAgICAgICAgdG90YWxDbGFwcyArPSBjbHA7CgogICAgICAgICAgICBpZiAoIW5ld0xlYWRpbmcgJiYgKGQgPT09IDMgfHwgZCA9PT0gNiB8fCBkID09PSA5KSkgewogICAgICAgICAgICAgICAgdG90YWxDbGFwcyArPSBjbnQ7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNvbnN0IHJlc3VsdCA9IFt0b3RhbE51bWJlcnMsIHRvdGFsQ2xhcHNdOwogICAgICAgIG1lbW8uc2V0KGtleSwgcmVzdWx0KTsKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfTsKCiAgICBjb25zdCBbX24sIHRvdGFsQ2xhcHNGcm9tMFRvTl0gPSBkcCgwLCB0cnVlLCB0cnVlKTsKICAgIHJldHVybiB0b3RhbENsYXBzRnJvbTBUb047Cn07Cgpjb25zdCBzb2x2ZTM2OSA9IChhLCBiKSA9PiBjb3VudENsYXBzKGIpIC0gY291bnRDbGFwcyhhIC0gMSk7Cgpjb25zb2xlLmxvZyhzb2x2ZTM2OShhLCBiKSk7