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.OutputStream;
import java.io.IOException;
import java.util.Arrays;
import java.io.PrintWriter;
import java.util.InputMismatchException;
import java.io.InputStream;
import java.io.DataInputStream;

/**
 * Built using CHelper plug-in
 * Actual solution is at the top
 * @author karan173
 */
public class Main {
    public static void main(String[] args) {
        InputStream inputStream = System.in;
        OutputStream outputStream = System.out;
        FastReader in = new FastReader(inputStream);
        PrintWriter out = new PrintWriter(outputStream);
        TaskC solver = new TaskC();
        solver.solve(1, in, out);
        out.close();
    }
}

class TaskC {
    public void solve(int testNumber, FastReader in, PrintWriter out)
    {
        int n = in.nextInt();
        int k = in.nextInt();
        if(n<k)
        {
            out.println(-1);
            return;
        }
        if(k==1 && n>1)
        {
            out.println(-1);
            return;
        }
        char a[] = new char[n];
        for (int i = 0; i < n; i++)
        {
           a[i] = (i%2==0)?'a' : 'b';
        }
        if(k<=2)
        {
            for (int i = 0; i < n; i++) {
                out.print(a[i]);
            }
            out.println("");
            return;
        }
        char last = (char) ('a' + k - 1);
        for(int i = n-1; i>=0 && last>'b'; i--)
        {
            a[i] = last--;
        }
        boolean error = false;
        boolean c[] = new boolean[26];
        Arrays.fill(c,false);
        for (int i = 0; i < n - 1; i++) {
            if(a[i] == a[i+1])
                error = true;
            c[a[i]-'a'] = true;
            if(!(a[i]>='a' && a[i]<='z'))
                error = true;
        }
        c[a[n-1] - 'a'] = true;
        if(!(a[n-1]>='a' && a[n-1]<='z'))
            error = true;
        int distinct = 0;
        for (int i = 0; i < 26; i++) {
            distinct += (c[i]) ? 1 : 0;
        }
        if(distinct != k)
            error = true;
        if(error)
        {
            //System.out.println(distinct );
            throw new RuntimeException();
        }
        for (int i = 0; i < n; i++) {
            out.print(a[i]);
        }

        out.println("");

    }
}

class FastReader
{
    final private int BUFFER_SIZE = 1 << 17;

    private DataInputStream din;
    private byte[] buffer;
    private int bufferPointer, bytesRead;

    public FastReader(InputStream in) {
        din = new DataInputStream(in);
        buffer = new byte[BUFFER_SIZE];
        bufferPointer = bytesRead = 0;
    }
    public byte next()
    {
        try {
            return read();
        } catch (Exception e) {
            throw new InputMismatchException();
        }
    }

    public int nextInt() {
        int ret = 0;
        byte c = next();
        while (c <= ' ')
            c = next();
        boolean neg = c == '-';
        if (neg)
            c = next();
        do {
            ret = (ret << 3) + (ret << 1) + c - '0';
            c = next();
        } while (c > ' ');
        if (neg)
            return -ret;
        return ret;
    }

    private void fillBuffer() {
        try {
            bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
        } catch (IOException e) {
            throw new InputMismatchException();
        }
        if (bytesRead == -1)
            buffer[0] = -1;
    }

    private byte read()  {
        if (bufferPointer == bytesRead)
            fillBuffer();
        return buffer[bufferPointer++];
    }
}
