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 C++ (GCC 9.2.1) (judge verdict: Accepted)

#include <bits/stdc++.h>
#define REP(i,n) for (int i = 0; i <(n); ++i)
#define REP2(i,x,n) for (int i = x; i <(n); ++i)
#define ALL(v) v.begin(), v.end()
#define RALL(v) v.rbegin(), v.rend()
using namespace std;
using ll = long long;
using P = pair<int,int>;
static const double PI = acos(-1);



int main(){
  string s;
  cin >> s;

  	//数字の文字列をint型に一文字ずつ変換するラムダ式
  	auto strTOint = [&](char c){
  		return c - '0';
  	};
  	vector<int> a(s.size());
  		REP(i,s.size()){
  		a[i] = strTOint(s[i]);
  	}

  //for(auto x: a) cout << x << endl;
  int n = s.size();

  if(n == 1){
    cout << a[0] << endl;
    return 0;
  }



  for(int i = n - 1; i > 0; i--){

    //cout << "i" << i << endl;
    if(a[i] != 9 ){
      a[i] = 9;
      --a[i-1];
    }

  }

  //for(auto x: a) cout << x << endl;

  int sum = 0;
  REP(i,n) sum += a[i];
  cout << sum << endl;

  return 0;
}