package main
import (
"fmt"
"math"
)
func reverseBits(n int) int {
rev := 0
for n > 0 {
rev = (rev << 1) | (n & 1)
n >>= 1
}
return rev
}
func countBinaryPalindromes(n int) int {
if n < 0 {
return 0
}
count := 0
if n >= 0 {
count = 1
}
for k := 1; ; k++ {
bits := int(math.Log2(float64(k))) + 1
oddPal := (k << (bits - 1)) | reverseBits(k>>1)
if oddPal > n {
break
}
count++
evenPal := (k << bits) | reverseBits(k)
if evenPal > n {
continue
}
count++
}
return count
}
func main() {
var n int
fmt.Scan(&n)
result := countBinaryPalindromes(n)
fmt.Println(result)
}