#include <bits/stdc++.h>   using namespace std;   long long gcd(long long a, long long b) {     if ((a == 0) || (b == 0)) return a + b;     return gcd(b, a % b);   }   long long pow_mod(long long a, long long b) {     long long res = 1;     while (b) {       if (b & 1) res = (res * a) % 1000000007;       a = (a * a) % 1000000007;       b >>= 1;     }     return (res % 1000000007);   }   long long pow_2(long long a, long long b) {     long long res = 1;     while (b) {       if (b & 1) res = (res * a);       a = (a * a);       b >>= 1;     }     return res;   }   bool isPrime(long long a) {     for (int i = 3; (i * i) <= a; i += 2) {       if ((a % i) == 0) return false;     }     if ((a != 2) && ((a % 2) == 0)) return false;     if (a == 1) return false;     return true;   }   string con_ll_to_str(int a) {     stringstream mystr;     mystr << a;     return mystr.str();   }   long long con_str_to_ll(string st) {     long long numb = 0;     int len = st.size(), i, j = 0;     for (i = len - 1; i >= 0; i--) {       numb += (pow_2(10, j) * (st[i] -  0 ));       j++;     }     return numb;   }   long long baseno_to_decimal(string st, long long basee) {     long long i = 0, j, anss = 0;     for (j = (int)st.length() - 1; j >= 0; j--) {       anss += (st[j] -  0 ) * pow_2(basee, i);       i++;     }     return anss;   }   string decimal_to_string(long long num, long long basee) {     long long i = 0, j, opop;     string anss =   ;     vector<string> stri;     stri.push_back( 0 );     stri.push_back( 1 );     stri.push_back( 2 );     stri.push_back( 3 );     stri.push_back( 4 );     stri.push_back( 5 );     stri.push_back( 6 );     stri.push_back( 7 );     stri.push_back( 8 );     stri.push_back( 9 );     stri.push_back( A );     stri.push_back( B );     stri.push_back( C );     stri.push_back( D );     stri.push_back( E );     stri.push_back( F );     if (num == 0) {       return  0 ;     }     while (num) {       opop = num % basee;       anss += stri[opop];       num /= basee;     }     reverse(anss.begin(), anss.end());     return anss;   }   const int dx[] = {0, 1, 1, 1, 0, -1, -1, -1};   const int dy[] = {1, 1, 0, -1, -1, -1, 0, 1};   long long arr[100010];   int main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     long long T, N, K, i, j;     string st =   ;     cin >> N >> K;     if (K > N) {       cout <<  -1 ;       return 0;     }     if (K == 1 && N > 1) {       cout <<  -1 ;       return 0;     }     if (N == 1) {       cout <<  a ;       return 0;     }     long long opop = (N - K + 2);     for (i = 1; i <= opop; i++) {       if (i % 2) {         st.push_back( a );       } else {         st.push_back( b );       }     }     long long po = st.length(), pu = 0;     for (i = po + 1; i <= N; i++) {       st.push_back( c  + pu);       pu++;     }     cout << st;     return 0;   }   