Given a positive integer `K`

, you need to find the **length** of the **smallest** positive integer `N`

such that `N`

is divisible by `K`

, and `N`

only contains the digit `1`

.

Return *the length of *

`N`

. If there is no such `N`

, return -1.**Note:** `N`

may not fit in a 64-bit signed integer.

**Example 1:**

Input:K = 1Output:1Explanation:The smallest answer is N = 1, which has length 1.

**Example 2:**

Input:K = 2Output:-1Explanation:There is no such positive integer N divisible by 2.

**Example 3:**

Input:K = 3Output:3Explanation:The smallest answer is N = 111, which has length 3.

**Constraints:**

`1 <= K <= 10`

^{5}

```
struct Solution;
impl Solution {
fn smallest_repunit_div_by_k(k: i32) -> i32 {
let mut x: i32 = 0;
for i in 0..k {
x *= 10;
x += 1;
x %= k;
if x % k == 0 {
return i + 1;
}
}
-1
}
}
#[test]
fn test() {
let k = 1;
let res = 1;
assert_eq!(Solution::smallest_repunit_div_by_k(k), res);
let k = 2;
let res = -1;
assert_eq!(Solution::smallest_repunit_div_by_k(k), res);
let k = 3;
let res = 3;
assert_eq!(Solution::smallest_repunit_div_by_k(k), res);
}
```