#include <bits/stdc++.h>
using namespace std;
const int maxn = 80 + 2;
int n,l,cnt,s[maxn];
//cnt表示第几个困难串,cur表示字符串长度
int dfs(int cur)
{
if(cnt == n)
{
for(int i = 0; i < cur; i++)
{
// 注意格式控制,PE很多遍也不知道为什么,从网上借鉴了这个if else放到输出前面,就过了
if(i % 64 == 0 && i)
printf("\n");
else if(i % 4 == 0 && i)
printf(" ");
printf("%c",'A' + s[i]);
}
printf("\n%d\n",cur);
return 0;
}
for(int i = 0; i < l; i++)
{
s[cur] = i;
bool flag = true;
// 判断是否出现简单串
for(int j = 1; j * 2 <= cur + 1; j++)
{
bool sign = true;
for(int k = 0; k < j; k++)
{
if(s[cur - k] != s[cur - k - j])
{
sign = false;
break;
}
}
if(sign)
{
flag = false;
break;
}
}
if(flag)
{
cnt++;
if(!dfs(cur + 1))
return 0;
}
}
return 1;
}
int main()
{
while(scanf("%d%d",&n,&l) && n && l)
{
cnt = 0;
dfs(0);
}
return 0;
}