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)

//ΔARC 084D
#include<iostream>
#include<cstdio>
#include<fstream>
#include<algorithm>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<cmath>
#include<cstring>
#include<cstdlib>
using namespace std;
typedef long long LL;
const int N = 1e5+15;
int n,d[N];
vector<int> v[N];
void bfs0(int t){
	int i,s,x;
	s=v[t].size();
	for(i=0;i<s;i=i+1){
		x=v[t][i];
		if(!d[x*10%n]){
			d[x*10%n]=t;
			v[t].push_back(x*10%n);
			s++;
		}
	}
}
void bfs1(int t){
	int i,s,x;
	s=v[t].size();
	for(i=0;i<s;i=i+1){
		x=v[t][i];
		if(!d[(x+1)%n]){
			d[(x+1)%n]=t+1;
			v[t+1].push_back((x+1)%n);
		}
	}
}
int main()
{
	int i,t;
	scanf("%d",&n);
	d[1]=1;
	v[1].push_back(1);
	t=1;
	while(!d[0]){
		bfs0(t);
		bfs1(t);
		t++;
	}
	cout<<d[0]<<endl;
	return 0;
}