#include <bits/stdc++.h>

using namespace std;

char A[303][303];
char tmp[303][303];

int main() {
	int N; scanf("%d", &N);
	A[0][0] = tmp[0][0] = 'A'; A[0][1] = tmp[0][1] = 'B';
	for(int i = 2; i <= N; i++) {
		for(int j = 0; j < 1 << i - 1; j++) A[0][j] = 'A';
		for(int j = (1 << i - 1); j < 1 << i; j++) A[0][j] = 'B';
		int x = 1, y = 0;
		for(int j = 0; j < (1 << i - 1) - 1; j++) {
			for(int k = 0; k < 1 << i - 1; k++) {
				A[j + x][k + y] = tmp[j][k];
			}
		}
		x = 1; y = 1 << i - 1;
		for(int j = 0; j < (1 << i - 1) - 1; j++) {
			for(int k = 0; k < 1 << i - 1; k++) {
				A[j + x][k + y] = tmp[j][k];
			}
		}
		x = 1 + ((1 << i - 1) - 1); y = 0;
		for(int j = 0; j < (1 << i - 1) - 1; j++) {
			for(int k = 0; k < 1 << i - 1; k++) {
				A[j + x][k + y] = tmp[j][k];
			}
		}
		x = 1 + ((1 << i - 1) - 1); y = 1 << i - 1;
		for(int j = 0; j < (1 << i - 1) - 1; j++) {
			for(int k = 0; k < 1 << i - 1; k++) {
				A[j + x][k + y] = 131 - tmp[j][k];
			}
		}

		for(int j = 0; j < (1 << i) - 1; j++) {
			for(int k = 0; k < 1 << i; k++) tmp[j][k] = A[j][k];
		}
	}

	printf("%d\n", (1 << N) - 1);
	for(int i = 0; i < (1 << N) - 1; i++) printf("%s\n", A[i]);

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

int main(){
  int64_t N;
  cin>>N;
  int64_t cnta=1,cntb=1;
  int64_t i=3,j=5;
  
  while(i<=N){
    int64_t M=N-i;
    while(j<=M){
      if(j==M){
        cout<<cnta<<' '<<cntb<<endl;
        return 0;
      }
      cntb++;
      j*=5;
    }
    cntb=1;j=5;
    cnta++;i*=3;
  }
  cout<<-1<<endl;
  
}