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

// Why I am so dumb? :c
#include <bits/stdc++.h>

#define pb push_back
#define mp make_pair

#define all(x) (x).begin(), (x).end()

#define fi first
#define se second

using namespace std;

typedef long long ll;

string s;

int ans;
    
void solve() {                   
	cin >> s;

	for (char x : s) {
		ans += (x - '0');
	}

    ans = max(ans, ((int)s.size() - 1) * 9);

    for (int i = 0; i < s.size(); ++i) {
		if (s[i] == '0') {
			continue;
		}

		int cur = 0;

		for (int j = 0; j < i; ++j) {
			cur += (s[j] - '0');
		}

		cur += (s[i] - 1 - '0');
		cur += (s.size() - i - 1) * 9;
		ans = max(ans, cur);		
    }

    printf("%d\n", ans);
}

int main() {    
    int tt = 1;

    while (tt--) {
        solve();
    }

    return 0;
}