def gen_bit(bit_len):
    for i in range(2 ** ((bit_len + 1) // 2)):
        unit = bin(i)[2:]
        half = '0' * ((bit_len + 1) // 2 - len(unit)) + unit
        if bit_len % 2:
            yield half + half[-2::-1]
        else:
            yield half + half[::-1]

def count_palindromic(limit):
    bit_len = 1
    result = []
    while True:
        for s in gen_bit(bit_len):
            num = eval('0b1' + s + '1')
            if num > limit:
                return [1, 3] + result
            if str(num) == str(num)[::-1]:
                result.append(num)
        bit_len += 1

print(sum(count_palindromic(1000000)))