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 Go (1.6) (judge verdict: Runtime Error)

package main

import (
  "fmt"
)

type State struct {
  Value int
  Ret int
}

var K int

func bfs(visited []bool) int {
  quu := make([]State, 0)
  quu = append(quu, State{1, 1})

  for len(quu) > 0 {
    cur := quu[0]
    quu = quu[1:]
//    fmt.Printf("cur.Value is %d\n", cur.Value)
//    fmt.Printf("cur.Ret is %d\n", cur.Ret)

    if cur.Value % K == 0 {
      return cur.Ret
    }

    {
      nextValue := cur.Value * 10
      nextRet := cur.Ret
      if !visited[nextValue % K] {
        quu = append(quu, State{nextValue, nextRet})
        visited[nextValue % K] = true
      }
    }
    {
      nextValue := cur.Value + 1
      nextRet := cur.Ret + 1
      if !visited[nextValue % K] {
        quu = append(quu, State{nextValue, nextRet})
        visited[nextValue % K] = true
      }
    }
  }

  return -1
}


func main() {
  fmt.Scanf("%d", &K)
  visited := make([]bool, K + 1)
  fmt.Println(bfs(visited))

}