Problem:
Score : 300 points

Problem Statement

Find the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.

Constraints

1\leq N \leq 10^{16}

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the maximum possible sum of the digits (in base 10) of a positive integer not greater than N.

Sample Input 1

100

Sample Output 1

18

For example, the sum of the digits in 99 is 18, which turns out to be the maximum value.

Sample Input 2

9995

Sample Output 2

35

For example, the sum of the digits in 9989 is 35, which turns out to be the maximum value.

Sample Input 3

3141592653589793

Sample Output 3

137

Solution in Java8 (OpenJDK 1.8.0) (judge verdict: Wrong Answer)

import java.util.*;
import static java.lang.System.out;

import java.awt.image.IndexColorModel;
public class Main{
   static Scanner sc = new Scanner(System.in);
   public static void main(String[] args){
      long N = sc.nextLong();
      ArrayList<Integer> list = new ArrayList();
      String[] str = String.valueOf(N).split("");
      int length = str.length;
      int[] array = createInt(str,length);
      list.add(plusN(array,length));

      boolean flag = length == 1;
      list.add(squat(length-1,array));
      System.out.println(Math.max(list.get(0),list.get(1)));

      // for(int i=length-1;i>=0;i--){
      //    if(!flag && i != 0){
      //       array[i] = 9;
      //    }else{
      //       array[0] = array[0] - 1 ;
      //    }
      //    list.add(plusN(array,length));
      // }
      

      // int max = 0;
      // for(int i=0;i<=length;i++){
      //    max = max < list.get(i) ? list.get(i) : max;
      // }
      // System.out.println(max);
    
   }
   static int squat(int length,int[] array){
      return array[0] + length * 9;
   }
   static int[] createInt(String[] str,int length){
      int[] array = new int[length];
      int i = 0;
      for(String s: str){
         array[i++]  = Integer.parseInt(s);
      }
      return array;
   }
   static int plusN(int[] str,int length){
      int count = 0;
      for(int  s: str){
         count +=s;
      }
      return count; 
   }
}