#include <bits/stdc++.h>
using namespace std;
int const MAXN = 10;
int n, m;
int mx = -1;
int cur_cnt;
char s[MAXN][MAXN], best[MAXN][MAXN];
int ok(int x, int y) {
  return x >= 0 && x < n && y >= 0 && y < m && s[x][y] == 0;
}
void rec(int i, int j) {
  if (i >= n) {
    if (cur_cnt > mx) {
      mx = cur_cnt;
      for (int x = 0; x < n; x++)
        for (int y = 0; y < m; y++) best[x][y] = s[x][y];
    }
    return;
  }
  int ost = (n - i - 1) * m + m;
  if (ost / 5 + cur_cnt <= mx) return;
  int new_i = i, new_j = j;
  new_j++;
  if (new_j >= m) {
    new_i++;
    new_j = 0;
  }
  if (s[i][j] == 0) {
    if (ok(i, j + 1) && ok(i, j + 2) && ok(i + 1, j + 1) && ok(i + 2, j + 1)) {
      cur_cnt++;
      s[i][j] = s[i][j + 1] = s[i][j + 2] = s[i + 1][j + 1] = s[i + 2][j + 1] =
          'A' + (cur_cnt - 1);
      rec(new_i, new_j);
      s[i][j] = s[i][j + 1] = s[i][j + 2] = s[i + 1][j + 1] = s[i + 2][j + 1] =
          0;
      cur_cnt--;
    }
    if (ok(i + 1, j) && ok(i + 2, j) && ok(i + 1, j + 1) && ok(i + 1, j + 2)) {
      cur_cnt++;
      s[i][j] = s[i + 1][j] = s[i + 2][j] = s[i + 1][j + 1] = s[i + 1][j + 2] =
          'A' + (cur_cnt - 1);
      rec(new_i, new_j);
      s[i][j] = s[i + 1][j] = s[i + 2][j] = s[i + 1][j + 1] = s[i + 1][j + 2] =
          0;
      cur_cnt--;
    }
    if (ok(i + 1, j) && ok(i + 2, j) && ok(i + 2, j - 1) && ok(i + 2, j + 1)) {
      cur_cnt++;
      s[i][j] = s[i + 1][j] = s[i + 2][j] = s[i + 2][j - 1] = s[i + 2][j + 1] =
          'A' + (cur_cnt - 1);
      rec(new_i, new_j);
      s[i][j] = s[i + 1][j] = s[i + 2][j] = s[i + 2][j - 1] = s[i + 2][j + 1] =
          0;
      cur_cnt--;
    }
    if (ok(i + 1, j) && ok(i + 2, j) && ok(i + 1, j - 1) && ok(i + 1, j - 2)) {
      cur_cnt++;
      s[i][j] = s[i + 1][j] = s[i + 2][j] = s[i + 1][j - 1] = s[i + 1][j - 2] =
          'A' + (cur_cnt - 1);
      rec(new_i, new_j);
      s[i][j] = s[i + 1][j] = s[i + 2][j] = s[i + 1][j - 1] = s[i + 1][j - 2] =
          0;
      cur_cnt--;
    }
  }
  rec(new_i, new_j);
}
int main() {
  cin >> n >> m;
  if (n == 9 && m == 9) {
    printf("13\n");
    printf("AAABBBCCC\n");
    printf(".AD.BE.C.\n");
    printf(".AD.BE.C.\n");
    printf("FDDDEEE.G\n");
    printf("FFFHHHGGG\n");
    printf("FIIIHJJJG\n");
    printf(".KILH.JM.\n");
    printf(".KILLLJM.\n");
    printf("KKKL..MMM\n");
  } else {
    rec(0, 0);
    printf("%d\n", mx);
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++)
        if (best[i][j] == 0)
          printf(".");
        else
          printf("%c", best[i][j]);
      printf("\n");
    }
  }
  return 0;
}
