#include #include #include #include #include #include #include #include #include #include #include static const int MOD = 998244353; using ll = long long; using uint = unsigned; using ull = unsigned long long; using namespace std; template constexpr T INF = ::numeric_limits::max() / 32 * 15 + 208; void f(string &a, int &c, int n, int used){ if(c <= 0) return; if(a.size() == n){ if(used != 7) return; c--; if(c == 0){ cout << a << endl; } return; } for (int i = 0; i < 3; ++i) { a += char('A' + i); f(a, c, n, used | (1 << i)); if(c <= 0) return; a.pop_back(); } } int main() { int n, c; cin >> n >> c; string a; f(a, c, n, 0); if(c > 0){ cout << -1 << endl; } return 0; }