Problem:
Score : 700 points

Problem Statement

Find the smallest possible sum of the digits in the decimal notation of a positive multiple of K.

Constraints

2 \leq K \leq 10^5

K is an integer.

Input

Input is given from Standard Input in the following format:

K

Output

Print the smallest possible sum of the digits in the decimal notation of a positive multiple of K.

Sample Input 1

6

Sample Output 1

3

12=6×2 yields the smallest sum.

Sample Input 2

41

Sample Output 2

5

11111=41×271 yields the smallest sum.

Sample Input 3

79992

Sample Output 3

36

Solution in Rust (1.15.1) (judge verdict: Accepted)

fn run() {
    let n: usize = {
        let mut s = String::new();
        std::io::stdin().read_line(&mut s).unwrap();
        s.trim().parse().unwrap()
    };
    let mut dp = vec![9 * n; n];
    dp[1] = 1;
    let mut deq = std::collections::VecDeque::new();
    deq.push_front((1, 1));
    while let Some((v, d)) = deq.pop_front() {
        if d > dp[v] {
            continue;
        }
        let u = 10 * v % n;
        if d < dp[u] {
            dp[u] = d;
            deq.push_front((u, d));
        }
        let u = (v + 1) % n;
        if d  + 1 < dp[u] {
            dp[u] = d + 1;
            deq.push_back((u, d + 1));
        }
    }
    println!("{}", dp[0]);
}

fn main() {
    run();
}