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 OCaml (4.10.0) (judge verdict: Accepted)

Scanf.scanf "%d" (fun k ->
    let arr = Array.make k max_int in

    let deq = Array.make (2 * k) 0 in

    let rec loop f l =
        if f <= l then (
            let num = deq.(f) in
            let f = f + 1 in
            let cost = arr.(num) in
            let next = (num * 10) mod k in
            let f = if cost < arr.(next) then (
                arr.(next) <- cost;
                let f = f - 1 in
                deq.(f) <- next;
                f
            ) else f in
            let next = (num + 1) mod k in
            let l = if cost + 1 < arr.(next) then (
                arr.(next) <- cost + 1;
                let l = l + 1 in
                deq.(l) <- next;
                l
            ) else l
            in
            loop f l
        ) else f, l
    in
    arr.(1) <- 1;
    deq.(k) <- 1;
    ignore (loop k k);
    Printf.printf "%d\n" arr.(0)
)