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. 1.  No two neighbouring letters of a string coincide; that is, if we represent a string as *s* = *s*<sub class="lower-index">1</sub>*s*<sub class="lower-index">2</sub>... *s*<sub class="lower-index">*n*</sub>, then the following inequality holds, *s*<sub class="lower-index">*i*</sub> ≠ *s*<sub class="lower-index">*i* + 1</sub>(1 ≤ *i* &lt; *n*). 1.  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* = *x*<sub class="lower-index">1</sub>*x*<sub class="lower-index">2</sub>... *x*<sub class="lower-index">*p*</sub> is lexicographically less than string *y* = *y*<sub class="lower-index">1</sub>*y*<sub class="lower-index">2</sub>... *y*<sub class="lower-index">*q*</sub>, if either *p* &lt; *q* and *x*<sub class="lower-index">1</sub> = *y*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub> = *y*<sub class="lower-index">2</sub>, ... , *x*<sub class="lower-index">*p*</sub> = *y*<sub class="lower-index">*p*</sub>, or there is such number *r* (*r* &lt; *p*, *r* &lt; *q*), that *x*<sub class="lower-index">1</sub> = *y*<sub class="lower-index">1</sub>, *x*<sub class="lower-index">2</sub> = *y*<sub class="lower-index">2</sub>, ... , *x*<sub class="lower-index">*r*</sub> = *y*<sub class="lower-index">*r*</sub> and *x*<sub class="lower-index">*r* + 1</sub> &lt; *y*<sub class="lower-index">*r* + 1</sub>. The characters of the strings are compared by their ASCII codes.
A single line contains two positive integers *n* and *k* (1 ≤ *n* ≤ 10<sup class="upper-index">6</sup>, 1 ≤ *k* ≤ 26) — the string's length and the number of distinct letters.
def findString(n, k):
    # Case 1: If k > n, there is no solution
    if k > n:
        return "-1"
    
    # Case 2: If k = 1 and n = 1, the answer is "a"
    if k == 1 and n == 1:
        return "a"
    
    # Case 3: If k = 1 but n > 1, there is no solution
    if k == 1 and n > 1:
        return "-1"
    
    # Case 4: If k > 1, we can construct the string
    # Start by alternating the first two letters as much as possible
    result = "ab" * (n // 2)
    
    # If the length of the result is odd, add the first letter again
    if len(result) % 2 == 1:
        result += 'a'
    
    # Add the remaining distinct letters to the result
    for i in range(2, k):
        result += chr(97 + i)
    
    # Add the last character to complete the string of length n
    while len(result) < n:
        result += result[-1]
    
    return result

# Input processing
n, k = map(int, input().split())

# Output the result
print(findString(n, k))