import java.util.Scanner;
import java.lang.Math;

public class Main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	}
	
	// 10のn乗
	public static int pow10(int n){
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	}
} import java.util.Scanner; Scanner java.util import java.lang.Math; Math java.lang public class Main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	}
	
	// 10のn乗
	public static int pow10(int n){
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	}
} Main public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	} main {
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	} Scanner scanner = new Scanner(System.in); scanner new Scanner(System.in) String inputN = scanner.nextLine(); inputN scanner.nextLine() scanner.nextLine scanner int n = Integer.parseInt(inputN); n Integer.parseInt(inputN) Integer.parseInt Integer inputN int pow = (int)Math.log10(n) + 1; pow (int)Math.log10(n) + 1 (int)Math.log10(n) Math.log10 Math n 1 int oddPow = 0; oddPow 0 for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		} int i=1; int i=1; i 1 i<pow i pow i+=2 i+=2 i 2 {
			oddPow += pow10(i-1) * 9;
		} {
			oddPow += pow10(i-1) * 9;
		} oddPow += pow10(i-1) * 9 oddPow pow10(i-1) * 9 pow10(i-1) pow10 i-1 i 1 9 if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		} pow%2 != 0 pow%2 pow 2 0 {
			oddPow += n - pow10(pow-1) + 1;
		} oddPow += n - pow10(pow-1) + 1 oddPow n - pow10(pow-1) + 1 n - pow10(pow-1) n pow10(pow-1) pow10 pow-1 pow 1 1 System.out.println(oddPow) System.out.println System.out System System.out oddPow String[] args args // 10のn乗
	public static int pow10(int n){
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	} pow10 {
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	} int val = 1; val 1 for(int i=0;i<n;i++){
			val *= 10;
		} int i=0; int i=0; i 0 i<n i n i++ i++ i {
			val *= 10;
		} {
			val *= 10;
		} val *= 10 val 10 return val; val int n n public class Main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	}
	
	// 10のn乗
	public static int pow10(int n){
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	}
} public class Main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	}
	
	// 10のn乗
	public static int pow10(int n){
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	}
} Main
import java.util.Scanner;
import java.lang.Math;

public class Main{
	public static void main(String[] args){
		Scanner scanner = new Scanner(System.in);
		String inputN = scanner.nextLine();
		
		int n = Integer.parseInt(inputN);
		
		// 桁数
		int pow = (int)Math.log10(n) + 1;
		
		int oddPow = 0;
		for(int i=1;i<pow;i+=2){
			oddPow += pow10(i-1) * 9;
		}
		
		if(pow%2 != 0){
			oddPow += n - pow10(pow-1) + 1;
		}
		
		System.out.println(oddPow);
	}
	
	// 10のn乗
	public static int pow10(int n){
		int val = 1;
		for(int i=0;i<n;i++){
			val *= 10;
		}
		return val;
	}
}