// $Id: hash.java,v 1.3 2001/03/02 02:17:29 doug Exp $
// http://www.bagley.org/~doug/shootout/

// this program is modified from:
//   http://cm.bell-labs.com/cm/cs/who/bwk/interps/pap.html
// Timing Trials, or, the Trials of Timing: Experiments with Scripting
// and User-Interface Languages</a> by Brian W. Kernighan and
// Christopher J. Van Wyk.

import java.io.*;
import java.util.*;

public class hash {

    public static void main(String args[]) throws IOException {
    int n = Integer.parseInt(args[0]);
    int i, c;
    String s = "";
    Integer ii;
    // the original program used:
    // Hashtable ht = new Hashtable();
    // John Olsson points out that Hashtable is for synchronized access
    // and we should use instead:
    HashMap ht = new HashMap();

    c = 0;
    for (i = 1; i <= n; i++)
        ht.put(Integer.toString(i, 16), new Integer(i));
    for (i = 1; i <= n; i++)
        // The original code converted to decimal string this way:
        // if (ht.containsKey(i+""))
        if (ht.containsKey(Integer.toString(i, 10)))
        c++;

    System.out.println(c);
    }
}