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
import java.io.*;
import java.math.*;

public class Main
{
    static Input in;
    static Output out;
    static final boolean OJ = System.getProperty("ONLINE_JUDGE") != null;

    public static void main(String[] args) throws IOException
    {
        in = new Input(OJ ? System.in : new FileInputStream("in.txt"));
        out = new Output(OJ ? System.out : new FileOutputStream("out.txt"));
        solve();
        out.close();
        System.exit(0);
    }

    private static void solve() throws IOException
    {
        int n = in.nextInt(), k = in.nextInt();
        if (k > n) out.print(-1);
        else if (k == 1 && n > 1) out.print(-1);
        else if (n == 1) out.print('a');
        else if (k == n) for (int i = 0; i < n; i++) out.print((char)('a' + i));
        else if (k == 2)
        {
            char last = 'a';
            for (int i = 0; i < n; i++)
            {
                out.print(last);
                if (last == 'a') last = 'b';
                else last = 'a';
            }
        }
        else
        {
            char last = 'a';
            for (int i = 0; i <= n - k + 1; i++)
            {
                out.print(last);
                if (last == 'a') last = 'b';
                else last = 'a';
            }
            last = 'c';
            for (int i = n - k + 2; i < n; i++)
            {
                out.print(last++);
            }
        }
    }
}

class Input
{
    final int SIZE = 8192; //4096; 8192; 65536;
    InputStream in;
    byte[] buf = new byte[SIZE];
    int last, current, total;

    public Input(InputStream stream) throws IOException
    {
        in = stream; last = read();
    }

    int read() throws IOException
    {
        if (total == -1) return -1;
        if (current >= total)
        {
            current = 0; total = in.read(buf);
            if (total <= 0) return -1;
        }
        return buf[current++];
    }

    void advance() throws IOException
    {
        while (true)
        {
            if (last == -1) return;
            if (!isValidChar(last)) last = read();
            else break;
        }
    }

    boolean isValidChar(int c) { return c > 32 && c < 127; }

    public boolean endOfFile() throws IOException { advance(); return last == -1; }

    public String nextString() throws IOException
    {
        advance();
        if (last == -1) throw new EOFException();
        StringBuilder s = new StringBuilder();
        while (true)
        {
            s.appendCodePoint(last); last = read();
            if (!isValidChar(last)) break;
        }
        return s.toString();
    }

    public String nextLine() throws IOException
    {
        if (last == -1) throw new EOFException();
        StringBuilder s = new StringBuilder();
        while (true)
        {
            s.appendCodePoint(last); last = read();
            if (last == '\n' || last == -1) break;
        }
        return s.toString();
    }

    public String nextLine(boolean ignoreIfEmpty) throws IOException
    {
        if (!ignoreIfEmpty) return nextLine();
        String s = nextLine();
        while (s.trim().length() == 0) s = nextLine();
        return s;
    }

    public int nextInt() throws IOException
    {
        advance();
        if (last == -1) throw new EOFException();
        int n = 0, s = 1;
        if (last == '-')
        {
            s = -1; last = read();
            if (last == -1) throw new EOFException();
        }
        while (true)
        {
            n = n * 10 + last - '0'; last = read();
            if (!isValidChar(last)) break;
        }
        return n * s;
    }

    public long nextLong() throws IOException
    {
        advance();
        if (last == -1) throw new EOFException();
        int s = 1;
        if (last == '-')
        {
            s = -1; last = read();
            if (last == -1) throw new EOFException();
        }
        long n = 0;
        while (true)
        {
            n = n * 10 + last - '0'; last = read();
            if (!isValidChar(last)) break;
        }
        return n * s;
    }

    public BigInteger nextBigInt() throws IOException { return new BigInteger(nextString()); }

    public char nextChar() throws IOException
    {
        advance();
        char c = (char) last;
        last = 0;
        return c;
    }

    public double nextDouble() throws IOException
    {
        advance();
        if (last == -1) throw new EOFException();
        int s = 1;
        if (last == '-')
        {
            s = -1; last = read();
            if (last == -1) throw new EOFException();
        }
        double n = 0;
        while (true)
        {
            n = n * 10 + last - '0'; last = read();
            if (!isValidChar(last) || last == '.') break;
        }
        if (last == '.')
        {
            last = read();
            if (last == -1) throw new EOFException();
            double m = 1;
            while (true)
            {
                m = m / 10;
                n = n + (last - '0') * m; last = read();
                if (!isValidChar(last)) break;
            }
        }
        return n * s;
    }

    public BigDecimal nextBigDecimal() throws IOException { return new BigDecimal(nextString()); }

    public int[] nextIntArray(int len) throws IOException
    {
        int[] A = new int[len];
        for (int i = 0; i < len; i++) A[i] = nextInt();
        return A;
    }

    public long[] nextLongArray(int len) throws IOException
    {
        long[] A = new long[len];
        for (int i = 0; i < len; i++) A[i] = nextLong();
        return A;
    }

    public int[][] nextIntTable(int rows, int cols) throws IOException
    {
        int[][] T = new int[rows][];
        for (int i = 0; i < rows; i++) T[i] = nextIntArray(cols);
        return T;
    }
}

class Output
{
    final int SIZE = 4096; // 4096; 8192
    Writer out;
    char[] cb = new char[SIZE];
    int nChars = SIZE, nextChar = 0;
    char lineSeparator = '\n';

    public Output(OutputStream stream) { out = new OutputStreamWriter(stream); }

    void flushBuffer() throws IOException
    {
        if (nextChar == 0) return;
        out.write(cb, 0, nextChar);
        nextChar = 0;
    }

    void write(int c) throws IOException
    {
        if (nextChar >= nChars) flushBuffer();
        cb[nextChar++] = (char) c;
    }

    void write(String s, int off, int len) throws IOException
    {
        int b = off, t = off + len;
        while (b < t)
        {
            int a = nChars - nextChar, a1 = t - b;
            int d = a < a1 ? a : a1;
            s.getChars(b, b + d, cb, nextChar);
            b += d;
            nextChar += d;
            if (nextChar >= nChars) flushBuffer();
        }
    }

    void write(String s) throws IOException { write(s, 0, s.length()); }

    public void print(Object obj) throws IOException { write(String.valueOf(obj)); }

    public void println(Object obj) throws IOException
    {
        write(String.valueOf(obj));
        write(lineSeparator);
    }

    public void printf(String format, Object... obj) throws IOException { write(String.format(format, obj)); }

    public void printElements(Object... obj) throws IOException
    {
        for (int i = 0; i < obj.length; i++)
        {
            if (i > 0) print(" ");
            print(obj[i]);
        }
        print(lineSeparator);
    }

    public void close() throws IOException
    {
        flushBuffer();
        out.close();
    }
}