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 Pascal (FPC 2.6.2) (judge verdict: Accepted)

var
	deque:array[0..199999]of Longint;
	size:Longint=200000;
	qhead,qtail:Longint;
	k,i,u:Longint;
	d:array[0..99999]of Longint;
procedure pushf(a:Longint);
begin
	dec(qhead);
	if qhead<0 then qhead:=size+qhead;
	deque[qhead]:=a;
end;
procedure pusht(a:Longint);
begin
	deque[qtail]:=a;
	inc(qtail);
	if qtail>=size then qtail:=qtail-size;
end;
function popf():Longint;
var s:Longint;
begin
	s:=deque[qhead];
	inc(qhead);
	if qhead>=size then qhead:=qhead-size;
	popf:=s;
end;
begin
	read(k);
	for i:=0 to k-1 do d[i]:=1000000000;
	d[1]:=1;
	pusht(1);
	while qhead<>qtail do begin
		u:=popf();
		if d[10*u mod k]>d[u]then begin
			pushf(10*u mod k);
			d[10*u mod k]:=d[u];
		end;
		if d[(u+1)mod k]>d[u]+1 then begin
			pusht((u+1)mod k);
			d[(u+1)mod k]:=d[u]+1;
		end;
	end;
	writeln(d[0]);
end.