#include <bits/stdc++.h>
#define ll long long
using namespace std;
int n, k, a[20];
//a = 0, b = 1
bool kt(int a[], int n){
int dem = 0, cnt = 0;
for(int i = 1; i <= n; ++i){
if(a[i] == 0){
cnt++;
}
else{
if(cnt == k){
++dem;
}
cnt = 0;
}
}
if(cnt == k) ++dem;
return dem == 1;
}
void ktao(){
for(int i = 1; i <= n; ++i)
a[i] = 0;
}
int check = 0;
void sinh(){
int i = n;
while(i >= 1 && a[i] == 1){
a[i] = 0;
--i;
}
if(i == 0) check = 1;
else a[i] = 1;
}
int main()
{
cin >> n >> k;
ktao();
vector<vector<char>>ans;
while(!check){
if(kt(a, n)){
vector<char>v;
for(int j = 1; j <= n; ++j)
if(a[j] == 1) v.push_back('B');
else v.push_back('A');
ans.push_back(v);
}
sinh();
}
cout << ans.size() << "\n";
for(auto x : ans){
for(int i = 0; i < x.size(); ++i)
cout << x[i];
cout << '\n';
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgbGwgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbiwgaywgYVsyMF07Ci8vYSA9IDAsIGIgPSAxCmJvb2wga3QoaW50IGFbXSwgaW50IG4pewogICAgaW50IGRlbSA9IDAsIGNudCA9IDA7IAogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpewogICAgICAgIGlmKGFbaV0gPT0gMCl7CiAgICAgICAgICAgIGNudCsrOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBpZihjbnQgPT0gayl7CiAgICAgICAgICAgICAgICArK2RlbTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjbnQgPSAwOwogICAgICAgIH0KICAgIH0KICAgIGlmKGNudCA9PSBrKSArK2RlbTsgCiAgICByZXR1cm4gZGVtID09IDE7Cn0KCnZvaWQga3RhbygpewogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyArK2kpCiAgICAgICAgYVtpXSA9IDA7Cn0KaW50IGNoZWNrID0gMDsKdm9pZCBzaW5oKCl7CiAgICBpbnQgaSA9IG47IAogICAgd2hpbGUoaSA+PSAxICYmIGFbaV0gPT0gMSl7CiAgICAgICAgYVtpXSA9IDA7CiAgICAgICAgLS1pOwogICAgfQogICAgaWYoaSA9PSAwKSBjaGVjayA9IDE7IAogICAgZWxzZSBhW2ldID0gMTsKfQppbnQgbWFpbigpCnsKICAgIGNpbiA+PiBuID4+IGs7IAogICAga3RhbygpOwogICAgdmVjdG9yPHZlY3RvcjxjaGFyPj5hbnM7IAogICAgd2hpbGUoIWNoZWNrKXsKICAgICAgICBpZihrdChhLCBuKSl7CiAgICAgICAgICAgIHZlY3RvcjxjaGFyPnY7CiAgICAgICAgICAgIGZvcihpbnQgaiA9IDE7IGogPD0gbjsgKytqKQogICAgICAgICAgICAgICAgaWYoYVtqXSA9PSAxKSAgdi5wdXNoX2JhY2soJ0InKTsgCiAgICAgICAgICAgICAgICBlbHNlIHYucHVzaF9iYWNrKCdBJyk7CiAgICAgICAgICAgIGFucy5wdXNoX2JhY2sodik7CiAgICAgICAgfQogICAgICAgIHNpbmgoKTsKICAgIH0KICAgIGNvdXQgPDwgYW5zLnNpemUoKSA8PCAiXG4iOwogICAgZm9yKGF1dG8geCA6IGFucyl7CiAgICAgICAgZm9yKGludCBpID0gMDsgaSA8IHguc2l6ZSgpOyArK2kpCiAgICAgICAgICAgIGNvdXQgPDwgeFtpXTsKICAgICAgICBjb3V0IDw8ICdcbic7CiAgICB9CiAgICByZXR1cm4gMDsKfQ==