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 C# (.NET Core 3.1.201) (judge verdict: Accepted)

using System;
using System.Collections.Generic;
//777...の約数にkがあるか->mod kでやる
//(7をkで割ったあまり)*10+7をkで割ったあまりをループでみる
//0になったら正解、同じあまりになったら答え収束しないので-1

class Program
{
    static void Main()
    {
        int k = int.Parse(Console.ReadLine());
        int x = 7 % k;
        var H = new HashSet<int>();
        int i=1;
        bool flag = false;
        while (!H.Contains(x))
        {
            if (x == 0) { flag = true; break; }
            H.Add(x);
            x = (x * 10 + 7) % k;
            i++;
        }
        if (flag) Console.WriteLine(i);
        else Console.WriteLine(-1);
    }
}

//namespace C
//{
//    class Program
//    {
//        static void Main(string[] args)
//        {
//            k = int.Parse(Console.ReadLine());
//            //L = new List<int>();
//            Console.WriteLine(F(7,0));
//        }
//        static int k;
//        //static List<int> L;
//        static int F(int x, int cnt)
//        {
//            int t = x % k;
//            cnt++;
//            if (t == 0) return cnt;
//            if (cnt>k) return -1;
//            else return F(t * 10 + 7,cnt);
//        }
//        //static bool Chk(int t)
//        //{
//        //    if (L.Contains(t)) return true;
//        //    else
//        //    {
//        //        L.Add(t);
//        //        return false;
//        //    }
//        //}
//    }
//}