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: Wrong Answer)

#include <stdio.h>
#include <vector>
#include <queue>
#include <algorithm>
#include <iostream>
#include <string>
#include <bitset>
#include <map>
#include <set>
#include <tuple>
#include <string.h>
#include <math.h>
#include <random>
#include <functional>
#include <assert.h>
#include <math.h>
#define all(x) (x).begin(), (x).end()
#define xx first
#define yy second

using namespace std;

using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;

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

	vector<int> dist(k, -1);

	dist[1] = 1;

	deque<int> q;

	q.push_back(1);

	while (!q.empty())
	{
		auto now = q.front();
		q.pop_front();

		if (now == 0)
		{
			printf("%d\n", dist[0]);
			break;
		}

		int ten = (now * 10) % k;

		if (dist[ten] == -1)
		{
			dist[ten] = dist[now];
			q.push_front(ten);
		}

		int next = (now + 1) % k;
		if (dist[next] == -1)
		{
			dist[next] = dist[now] + 1;
			q.push_back(next);
		}
	}

	return 0;
}