#include <iostream>
#include <cmath>
#include <utility>
#include <vector>

using namespace std;

#define mp make_pair
#define x first
#define y second
typedef pair<int,int> pii;
typedef long long ll;

char ispis[500];

int main(){
	ios::sync_with_stdio(0);
	int n;
	cin>>n;
	cout<<(1<<n)-1<<"\n";
	for(int i=1;i<(1<<n);i++){
		for(int j=0;j<(1<<n);j++){
			int x=__builtin_popcount((i&j));
			if(x%2) ispis[j]='A';
			else ispis[j]='B';
		}
		for(int j=0;j<(1<<n);j++){
			cout<<ispis[j];
		}
		cout<<"\n";
	}
	




return 0;
}


#include <bits/stdc++.h>
using namespace std;

int N;
int ans[1010][1010];

int main() {
	cin >> N;
	int m = 2;
	ans[0][0] = 0; ans[0][1] = 1;
	for(int q = 0; q < N - 1; q++) {
		for(int i = 0; i < 2; i++) {
			for(int j = 0; j < 2; j++) {
				for(int k = 0; k < m / 2; k++) {
					for(int l = 0; l < m; l++) {
						ans[k + i * m / 2 + m - 1][l + j * m] = 
						ans[k + m / 2 - 1][l] ^ (i == 1 && j == 1); 			
					}
				}
			}
		}
		for(int i = 0; i < m - 1; i++) {
			for(int j = m - 1; j >= 0; j--) {
				ans[i][j * 2 + 1] = ans[i][j];
				ans[i][j * 2] = ans[i][j];
			}
		}
		m *= 2;
	}
	cout << m - 1 << endl;
	for(int i = 0; i < m - 1; i++) {
		for(int j = 0; j < m; j++) {
			cout << (!ans[i][j] ? 'A' : 'B');
		}
		cout << endl;
	}
}