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 C++14 (GCC 5.4.1) (judge verdict: Accepted)

#include <bits/stdc++.h>

using namespace std;

typedef long long ll;

const int INF = 1000000000;

int main()
{
  int K; scanf("%d", &K);

  deque<int> deq;
  deq.push_back(1);
  vector<int> dist(K, INF);
  dist[1] = 1;
  while (not deq.empty()) {
    int u = deq.front(); deq.pop_front();
    int v = (u + 1) % K;
    if (dist[u] + 1 < dist[v]) {
      dist[v] = dist[u] + 1;
      deq.push_back(v);
    }

    int w = (u * 10) % K;
    if (dist[u] < dist[w]) {
      dist[w] = dist[u];
      deq.push_front(w);
    }
  }

  printf("%d\n", dist[0]);
  return 0;
}