Little penguin Polo adores strings. But most of all he adores strings of length n.

One day he wanted to find a string that meets the following conditions:

  1. The string consists of n lowercase English letters (that is, the string's length equals n), exactly k of these letters are distinct. 
  2. No two neighbouring letters of a string coincide; that is, if we represent a string as s = s1s2... sn, then the following inequality holds, si ≠ si + 1(1 ≤ i < n). 
  3. Among all strings that meet points 1 and 2, the required string is lexicographically smallest. 



Help him find such string or state that such string doesn't exist.

String x = x1x2... xp is lexicographically less than string y = y1y2... yq, if either p < q and x1 = y1, x2 = y2, ... , xp = yp, or there is such number r (r < p, r < q), that x1 = y1, x2 = y2, ... , xr = yr and xr + 1 < yr + 1. The characters of the strings are compared by their ASCII codes.

Input

A single line contains two positive integers n and k (1 ≤ n ≤ 106, 1 ≤ k ≤ 26) — the string's length and the number of distinct letters.

Output

In a single line print the required string. If there isn't such string, print "-1" (without the quotes).

Examples

Input

7 4


Output

ababacd


Input

4 7


Output

-1
    /**
     * Created with IntelliJ IDEA.
     * User: brzezinsky
     * Date: 12/13/12
     * Time: 5:43 PM
     * To change this template use File | Settings | File Templates.
     */

    import java.io.*;
    import java.math.BigInteger;
    import java.util.*;

    public class A extends Thread {
        public A(String inputFileName, String outputFileName) {
            try {
                if (inputFileName != null) {
                    this.input = new BufferedReader(new FileReader(inputFileName));
                } else {
                    this.input = new BufferedReader(new InputStreamReader(System.in));
                }
                if (outputFileName != null) {
                    this.output = new PrintWriter(outputFileName);
                } else {
                    this.output = new PrintWriter(System.out);
                }
                this.setPriority(Thread.MAX_PRIORITY);
            } catch (Throwable e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
                System.exit(666);
            }
        }

        private void solve() throws Throwable {
            int n = nextInt(), k = nextInt();
            if (n < k) {
                output.println(-1);
                return;
            }
            if (k == 1) {
                if (n > 1) {
                    output.println(-1);
                }                    else
                output.println("a");
                return;
            }

            StringBuilder ans = new StringBuilder();
            if ((n + k) % 2 == 0) {
                int offset = n - k;
                for (int i = 0; i < offset >> 1; ++i) ans.append("ab");
                for (int i = 0; i < k; ++i) ans.append((char)('a' + i));
            }
            else {
                int offset = n - k;
                for (int i = 0; i < (offset + 1)>> 1; ++i) ans.append("ab");
                ans.append("a");
                for (int i = 2; i < k; ++i) {
                    ans.append((char)('a' + i));
                }
            }
            output.println(ans.toString());
        }

        public void run() {
            try {
                solve();
            } catch (Throwable e) {
                System.err.println(e.getMessage());
                e.printStackTrace();
                System.exit(666);
            } finally {
                output.close();
            }
        }

        public static void main(String... args) {
            new A(null, null).start();
            //new A("input.txt", "output.txt").start();
        }

        private int nextInt() throws IOException {
            return Integer.parseInt(next());
        }

        private double nextDouble() throws IOException {
            return Double.parseDouble(next());
        }

        private long nextLong() throws IOException {
            return Long.parseLong(next());
        }

        private String next() throws IOException {
            while (tokens == null || !tokens.hasMoreTokens()) {
                tokens = new StringTokenizer(input.readLine());
            }
            return tokens.nextToken();
        }

        private StringTokenizer tokens;
        private BufferedReader input;
        private PrintWriter output;
    }