import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException{
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    }
    static int count(int n){
        return 9*(int)Math.pow(10, n-1);
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        System.out.println(o.toString());
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static long Long(String s){
        return Long.parseLong(s);
    }
    static class MyReader extends BufferedReader{
        MyReader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        }
        long l() throws IOException{
            return Long(s());
        }
        long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        }
    }
} import java.io.*; io.* java import java.util.*; util.* java public class Main{
    public static void main(String[] args) throws IOException{
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    }
    static int count(int n){
        return 9*(int)Math.pow(10, n-1);
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        System.out.println(o.toString());
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static long Long(String s){
        return Long.parseLong(s);
    }
    static class MyReader extends BufferedReader{
        MyReader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        }
        long l() throws IOException{
            return Long(s());
        }
        long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        }
    }
} Main public static void main(String[] args) throws IOException{
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    } main {
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    } MyReader r = new MyReader(); r new MyReader() int N = r.i(); N r.i() r.i r int n = String.valueOf(N).length(); n String.valueOf(N).length() String.valueOf(N).length String.valueOf(N) String.valueOf String N if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        } n == 1 n 1 {
            println(N);
        } println(N) println N {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        } int d = n/2*2-1; d n/2*2-1 n/2*2 n/2 n 2 2 1 long ans = 0; ans 0 for(int i = 1; i <= d; i += 2){
                ans += count(i);
            } int i = 1; int i = 1; i 1 i <= d i d i += 2 i += 2 i 2 {
                ans += count(i);
            } {
                ans += count(i);
            } ans += count(i) ans count(i) count i if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            } n%2 == 1 n%2 n 2 1 {
                ans += N-(int)Math.pow(10, n-1)+1;
            } ans += N-(int)Math.pow(10, n-1)+1 ans N-(int)Math.pow(10, n-1)+1 N-(int)Math.pow(10, n-1) N (int)Math.pow(10, n-1) Math.pow Math 10 n-1 n 1 1 println(ans) println ans String[] args args static int count(int n){
        return 9*(int)Math.pow(10, n-1);
    } count {
        return 9*(int)Math.pow(10, n-1);
    } return 9*(int)Math.pow(10, n-1); 9*(int)Math.pow(10, n-1) 9 (int)Math.pow(10, n-1) Math.pow Math 10 n-1 n 1 int n n static void print(Object o){
        System.out.print(o.toString());
    } print {
        System.out.print(o.toString());
    } System.out.print(o.toString()) System.out.print System.out System System.out o.toString() o.toString o Object o o static void println(Object o){
        System.out.println(o.toString());
    } println {
        System.out.println(o.toString());
    } System.out.println(o.toString()) System.out.println System.out System System.out o.toString() o.toString o Object o o static int Int(String s){
        return Integer.parseInt(s);
    } Int {
        return Integer.parseInt(s);
    } return Integer.parseInt(s); Integer.parseInt(s) Integer.parseInt Integer s String s s static long Long(String s){
        return Long.parseLong(s);
    } Long {
        return Long.parseLong(s);
    } return Long.parseLong(s); Long.parseLong(s) Long.parseLong Long s String s s static class MyReader extends BufferedReader{
        MyReader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        }
        long l() throws IOException{
            return Long(s());
        }
        long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        }
    } MyReader MyReader(){
            super(new InputStreamReader(System.in));
        } MyReader {
            super(new InputStreamReader(System.in));
        } super(new InputStreamReader(System.in)) super new InputStreamReader(System.in) String s() throws IOException{
            return readLine();
        } s {
            return readLine();
        } return readLine(); readLine() readLine String[] ss() throws IOException{
            return s().split(" ");
        } ss {
            return s().split(" ");
        } return s().split(" "); s().split(" ") s().split s() s " " int i() throws IOException{
            return Int(s());
        } i {
            return Int(s());
        } return Int(s()); Int(s()) Int s() s int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        } ii {
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        } String[] ss = ss(); ss ss() ss int size = ss.length; size ss.length ss ss.length int[] ii = new int[size]; ii new int[size] size for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]); int j = 0; int j = 0; j 0 j < size j size j++ j++ j ii[j] = Integer.parseInt(ss[j]); ii[j] = Integer.parseInt(ss[j]) ii[j] ii j Integer.parseInt(ss[j]) Integer.parseInt Integer ss[j] ss j return ii; ii long l() throws IOException{
            return Long(s());
        } l {
            return Long(s());
        } return Long(s()); Long(s()) Long s() s long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        } ll {
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        } String[] ss = ss(); ss ss() ss int size = ss.length; size ss.length ss ss.length long[] ll = new long[size]; ll new long[size] size for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]); int j = 0; int j = 0; j 0 j < size j size j++ j++ j ll[j] = Long.parseLong(ss[j]); ll[j] = Long.parseLong(ss[j]) ll[j] ll j Long.parseLong(ss[j]) Long.parseLong Long ss[j] ss j return ll; ll BufferedReader public class Main{
    public static void main(String[] args) throws IOException{
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    }
    static int count(int n){
        return 9*(int)Math.pow(10, n-1);
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        System.out.println(o.toString());
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static long Long(String s){
        return Long.parseLong(s);
    }
    static class MyReader extends BufferedReader{
        MyReader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        }
        long l() throws IOException{
            return Long(s());
        }
        long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        }
    }
} public class Main{
    public static void main(String[] args) throws IOException{
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    }
    static int count(int n){
        return 9*(int)Math.pow(10, n-1);
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        System.out.println(o.toString());
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static long Long(String s){
        return Long.parseLong(s);
    }
    static class MyReader extends BufferedReader{
        MyReader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        }
        long l() throws IOException{
            return Long(s());
        }
        long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        }
    }
} Main
import java.io.*;
import java.util.*;
public class Main{
    public static void main(String[] args) throws IOException{
        MyReader r = new MyReader();        
        int N = r.i();
        int n = String.valueOf(N).length();
        if(n == 1){
            println(N);
        } else {
            int d = n/2*2-1;
            long ans = 0;
            for(int i = 1; i <= d; i += 2){
                ans += count(i);
            }
            if(n%2 == 1){
                ans += N-(int)Math.pow(10, n-1)+1;
            }
            println(ans);
        }
        
    }
    static int count(int n){
        return 9*(int)Math.pow(10, n-1);
    }
    static void print(Object o){
        System.out.print(o.toString());
    }
    static void println(Object o){
        System.out.println(o.toString());
    }
    static int Int(String s){
        return Integer.parseInt(s);
    }
    static long Long(String s){
        return Long.parseLong(s);
    }
    static class MyReader extends BufferedReader{
        MyReader(){
            super(new InputStreamReader(System.in));
        }
        String s() throws IOException{
            return readLine();
        }
        String[] ss() throws IOException{
            return s().split(" ");
        }
        int i() throws IOException{
            return Int(s());
        }
        int[] ii() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            int[] ii = new int[size];
            for(int j = 0; j < size; j++) ii[j] = Integer.parseInt(ss[j]);
            return ii;
        }
        long l() throws IOException{
            return Long(s());
        }
        long[] ll() throws IOException{
            String[] ss = ss();
            int size = ss.length;
            long[] ll = new long[size];
            for(int j = 0; j < size; j++) ll[j] = Long.parseLong(ss[j]);            
            return ll;
        }
    }
}