#include
#include
#include
#include
#include
using namespace std;
struct node {
int idx, cost;
node () {}
node(int _idx, int _cost) {
idx = _idx;
cost = _cost;
}
bool operator < (const node &t) const {
return cost > t.cost;
}
};
int main() {
int K;
cin >> K;
vector dist(K + 1, 2e9);
priority_queue pq;
pq.push(node(K, 0));
while(!pq.empty()) {
node c = pq.top();
pq.pop();
for(int i = 0; i <= 9; ++i) {
if(i == 0 and c.idx == K) continue;
int next_number = (c.idx * 10 + i) % K;
if(i + c.cost < dist[next_number]) {
dist[next_number] = i + c.cost;
pq.push(node(next_number, c.cost + i));
}
}
}
cout << dist[0] << endl;
return 0;
}