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: Time Limit Exceeded)

Scanf.scanf "%d" (fun k ->
    let arr = Array.make k (-1) 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
            if arr.(next) < 0 || arr.(next) > cost then (
                arr.(next) <- cost;
                let f = f - 1 in
                deq.(f) <- next;
                loop f l
            );
            let next = (num + 1) mod k in
            if arr.(next) < 0 || arr.(next) > cost + 1 then (
                arr.(next) <- cost + 1;
                let l = l + 1 in
                deq.(l) <- next;
                loop f l
            );
        )
    in
    arr.(1) <- 1;
    deq.(k) <- 1;
    loop k k;
    Printf.printf "%d\n" arr.(0)
)