Problem:
Score : 300 points

Problem Statement

Takahashi loves the number 7 and multiples of K.

Where is the first occurrence of a multiple of K in the sequence 7,77,777,\ldots? (Also see Output and Sample Input/Output below.)

If the sequence contains no multiples of K, print -1 instead.

Constraints

1 \leq K \leq 10^6

K is an integer.

Input

Input is given from Standard Input in the following format:

K

Output

Print an integer representing the position of the first occurrence of a multiple of K. (For example, if the first occurrence is the fourth element of the sequence, print 4.)

Sample Input 1

101

Sample Output 1

4

None of 7, 77, and 777 is a multiple of 101, but 7777 is.

Sample Input 2

2

Sample Output 2

-1

All elements in the sequence are odd numbers; there are no multiples of 2.

Sample Input 3

999983

Sample Output 3

999982

Solution in Rust (1.42.0) (judge verdict: Accepted)

use proconio::{fastout, input};

// 7 * 10^i はmod kで循環する
// 循環する和がkと互いに素なら任意の数が作れる
// 互いに素でないなら、有限個試せばわかる GCDを計算すれば良い？
// 循環の長さはk以下
//
// kより短く循環することはあるか？
//
// ai = ajとする (0 <= i < j < k)
// aj - ai = 0
// aj - ai = a_{j - i} * 10^i
// kと10が互いに素なら
// a_{j - i} = 0
// 同じのがあれば割り切れるのが作れる。
// k+1まであれば絶対に1つはかぶる
// k+1まで試せば良い
//
// kと10が互いに素でないなら
// kが2で割り切れる場合
// aiはすべて奇数なのでだめ
// kが5で割り切れる場合
// aiは絶対に5で割り切れない

#[fastout]
fn main() {
    input! {
        k: i64,
    }

    if k % 2 == 0 || k % 5 == 0 {
        println!("-1");
        return;
    }

    let mut a = 0;
    for i in 0..(k + 1) {
        a += 7 * pow_mod(10, i, k);
        a = a % k;

        if a % k == 0 {
            println!("{}", i + 1);
            return;
        }
    }

    println!("-1");
}

fn pow_mod(n: i64, p: i64, m: i64) -> i64 {
    if n == 0 {
        return 0;
    }
    if p == 0 {
        return 1;
    }

    if p % 2 == 0 {
        let half = pow_mod(n, p / 2, m);
        (half * half) % m
    } else {
        (pow_mod(n, p - 1, m) * n) % m
    }
}