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

#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
#include<deque>
using namespace std;
#define ll long long
#define rg register
#define inf 0x3f3f3f3f
#define MX 100005
#define fi first
#define se second
typedef pair<int,int> PA;
deque<PA> que;
int dis[MX];
int n;
int main(){

    scanf("%d",&n);
    memset(dis,inf,sizeof(dis));
    que.push_front(make_pair(1,1));
    while(1)
    {
        PA x=que.front();que.pop_front();
        if(dis[x.fi]<=x.se) continue;
        else dis[x.fi]=x.se;
        if(x.fi==0) break;
        if(x.fi%10!=9) que.push_back(make_pair(x.fi==n-1?0:x.fi+1,x.se+1));
        que.push_front(make_pair(x.fi*10%n,x.se));
    }
    printf("%d\n",dis[0]);
    return 0;
}