#include <bits/stdc++.h>
using namespace std;
int N, M;
char ans[10][10];
int dp[1 << 19][10][10];
int mskv[4], mska[4], mny[4] = {0, 1, 0, 2}, mxy[4];
void advance(int &x, int &y) {
  if (++y == M) {
    y = 0;
    x++;
  }
}
void setmax(int &a, int b) {
  if (a < b) {
    a = b;
  }
}
void printans() {
  for (int i = 0; i < N; i++) {
    puts(ans[i]);
  }
}
int getdp(int msk, int x, int y) {
  if (x == N - 2) {
    return 0;
  }
  int &ref = dp[msk][x][y];
  if (ref != -1) {
    return ref;
  }
  int nx = x, ny = y;
  advance(nx, ny);
  ref = getdp(msk >> 1, nx, ny);
  for (int i = 0; i < 4; i++) {
    if (mny[i] <= y && y < mxy[i] && (msk & mskv[i]) == 0) {
      setmax(ref, 1 + getdp(((msk ^ mska[i]) >> 1), nx, ny));
    }
  }
  return ref;
}
int main() {
  atexit(printans);
  scanf("%d %d", &N, &M);
  for (int i = 0; i < N; i++) {
    memset(ans[i], '.', M);
  }
  if (N < 3 || M < 3) {
    puts("0");
    return 0;
  }
  mskv[0] = 7 + (1 << (M + 1));
  mskv[1] = 1 + (1 << M) + (3 << (2 * M - 1));
  mskv[2] = 1 + (7 << M) + (1 << (2 * M));
  mskv[3] = 1 + (7 << (M - 2)) + (1 << (2 * M));
  for (int i = 0; i < 4; i++) {
    mska[i] = mskv[i] ^ (i < 2 ? (1 << (2 * M + 1)) : 0);
  }
  mxy[0] = M - 2;
  mxy[1] = M - 1;
  mxy[2] = M - 2;
  mxy[3] = M;
  memset(dp, -1, sizeof(dp));
  int rem = getdp(0, 0, 0);
  printf("%d\n", rem);
  int msk = 0, x = 0, y = 0;
  char curc = 'A';
  for (; rem; advance(x, y)) {
    int nx = x, ny = y;
    advance(nx, ny);
    if (rem == getdp(msk >> 1, nx, ny)) {
      msk >>= 1;
      continue;
    }
    for (int i = 0; i < 4; i++) {
      if (mny[i] <= y && y < mxy[i] && (msk & mskv[i]) == 0) {
        int nmsk = (msk ^ mska[i]) >> 1;
        if (getdp(msk, x, y) == 1 + getdp(nmsk, nx, ny)) {
          int cx = x, cy = y;
          for (int j = 0; j <= 2 * M + 1; j++, advance(cx, cy)) {
            if (mska[i] & (1 << j)) {
              ans[cx][cy] = curc;
            }
          }
          rem--;
          msk = nmsk;
          curc++;
          break;
        }
      }
    }
  }
}
