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 Kotlin (1.0.0) (judge verdict: Accepted)

import java.util.*

fun main(arg: Array<String>) {
    val k = readLine()!!.toInt()
    val edge = LinkedList<Pair<Int, Int>>()
    val score = Array<Int?>(k) { null }
    edge.add(Pair(1, 1))
    while (edge.isNotEmpty()) {
        val pair = edge.poll()
        val next1 = (pair.second * 10) % k
        val next2 = (pair.second + 1) % k
        score[pair.second] = pair.first
        if (pair.second == 0) break
        if (score[next1] == null) edge.push(Pair(pair.first, next1))
        if (score[next2] == null) edge.add(Pair(pair.first + 1, next2))
    }
    println(score[0])
}