//时间复杂度太高。暴力搜索。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//2进制数加1
void addone(vector<int> & nums) {
int i = 0;
int len = nums.size();
while (i < len) {
if (nums[i] == 0) {
nums[i] = 1;
break;
}
else {
nums[i] = 0;
}
i++;
}
return;
}
//2进制数各位是否都是1
bool isallone(vector<int> nums) {
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == 0) return false;
}
return true;
}
//判断是否为神奇数
bool ismagicnum(long n) {
int sum = 0;
vector<int> nums;//把各位数存在数组里
while (n > 0) {
int temp = (int)(n % 10);
sum += temp;
nums.push_back(temp);
n = n / 10;
}
if (sum % 2 != 0) return false;
sum /= 2;
//2进制思想搜索,找到就返回true,找不到,2进制数加1.
//所在位位1,则相加, 不为1,则不加。复杂度老高了。。
vector<int> tempnums(nums.size());
while (!isallone(tempnums)) {
int tempsum = 0;
for (int i = 0; i < nums.size(); i++) {
tempsum += nums[i] * tempnums[i];
}
if (sum == tempsum) return true;
addone(tempnums);
}
return false;
}
int main() {
int sum = 0;
long left;
long right;
cin >> left;
cin >> right;
while (left <= right) {
if (ismagicnum(left++))
sum++;
}
cout << sum << endl;
return 0;
}