# -*- mode: icon -*-
# $Id: hash.icon,v 1.1 2000/12/18 03:10:54 doug Exp $
# http://www.bagley.org/~doug/shootout/

procedure hexstring(i)
    local s
    if i = 0 then s := "0"
    else {
    s := ""
    while i ~= 0 do {
        s := "0123456789abcdef"[iand(i,15) + 1] || s
        i := ishift(i,-4)
    }
    }
    return s
end

procedure main(argv)
    local n
    local X
    local c
    local i
    n := argv[1] | 1
    X := table(0)
    c := 0
    every i := 1 to n do {
    X[hexstring(i)] := i
    }
    every i := n to 1 by -1 do {
    if (member(X,string(i))) then { c +:= 1 }
    }
    write(c)
end