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: Time Limit Exceeded)

using System;
using System.Text;
using System.Linq;
using System.Collections;
using System.Collections.Generic;
using static System.Console;
using static System.Math;

namespace AtCoder
{
    public class Program
    {
        public static void Main(string[] args)
        {
            new Program().Solve(new ConsoleInput(Console.In, ' '));
        }

        public void Solve(ConsoleInput cin)
        {
            var K = cin.ReadInt;
            long num = 100000000000;
            int seven = 7;
            var counter = 0;
            while (seven < num) {
                counter++;
                if (K % 2 == 0) {
                    WriteLine(-1);
                    break;
                }
                if (seven % K == 0) {
                    WriteLine(counter);
                    break;
                }
                seven = seven * 10 + 7;
            }
            //Console.WriteLine(Math.Abs(list.IndexOf(p) - list.IndexOf(q)));

            //var num = cin.ReadInt;
            //int[] array = cin.ReadIntArray(num);
            //List<int> list = array.ToList();



            ////for (int i =0; i < num; i++) {
            ////    list.Add(array[i]);

            ////}


            //var nk = Console.ReadLine().Split(' ');
            //var n = int.Parse(nk[0]);
            //var k = int.Parse(nk[1]);

            //var t = new int[n][];
            //for (int i =0; i < n;i++) {
            //    t[i] = cin.ReadIntArray(n);
            //}

            //int n = cin.ReadInt;
            //int K = cin.ReadInt;

            //int[] array = new int[n];

            //for (int i =0; i < n; i++) {
            //    array[i] = cin.ReadInt;
            //}

            //for (int i =0; i < n; i++) {
            //    if (array[i] == 0) {
            //        WriteLine(n);
            //    }
            //}

            //int res = 0;
            //int right = 0;
            //long mult = 1;

            //for (int left = 0; left < n; left++) {
            //    while (right < n && mult * array[right] <= K) {
            //        mult *= array[right];
            //        right++;
            //    }

            //    res = Math.Max(res, right - left);
            //    if (left == right) right++;
            //    else mult /= array[left];


            //}
            //WriteLine(res);
        }


    }

    public class ConsoleInput
    {
        private readonly System.IO.TextReader _stream;
        private char _separator = ' ';
        private Queue<string> inputStream;
        public ConsoleInput(System.IO.TextReader stream, char separator = ' ')
        {
            this._separator = separator;
            this._stream = stream;
            inputStream = new Queue<string>();
        }
        public string Read
        {
            get
            {
                if (inputStream.Count != 0) return inputStream.Dequeue();
                string[] tmp = _stream.ReadLine().Split(_separator);
                for (int i = 0; i < tmp.Length; ++i)
                    inputStream.Enqueue(tmp[i]);
                return inputStream.Dequeue();
            }
        }
        public string ReadLine { get { return _stream.ReadLine(); } }
        public int ReadInt { get { return int.Parse(Read); } }
        public long ReadLong { get { return long.Parse(Read); } }
        public double ReadDouble { get { return double.Parse(Read); } }
        public string[] ReadStrArray(long N) { var ret = new string[N]; for (long i = 0; i < N; ++i) ret[i] = Read; return ret; }
        public int[] ReadIntArray(long N) { var ret = new int[N]; for (long i = 0; i < N; ++i) ret[i] = ReadInt; return ret; }
        public long[] ReadLongArray(long N) { var ret = new long[N]; for (long i = 0; i < N; ++i) ret[i] = ReadLong; return ret; }
    }
}