#include <bits/stdc++.h>
using namespace std;
void die(string S) {
  puts(S.c_str());
  exit(0);
}
char occ[10][10];
bool T[4][3][3] = {{{1, 1, 1}, {0, 1, 0}, {0, 1, 0}},
                   {{0, 1, 0}, {0, 1, 0}, {1, 1, 1}},
                   {{1, 0, 0}, {1, 1, 1}, {1, 0, 0}},
                   {{0, 0, 1}, {1, 1, 1}, {0, 0, 1}}};
int n, m;
int ans;
int occur, occuc;
char res[10][10];
void Solve(int step) {
  if (step > ans) {
    ans = step;
    memcpy(res, occ, sizeof(occ));
  }
  for (int type = 0; type < 4; type++) {
    bool fl = true;
    for (int i = occur; i < n - 2 && fl; i++)
      for (int j = (i == occur ? occuc : 0); j < m - 2 && fl; j++) {
        bool f = true;
        for (int k = 0; k < 3; k++)
          for (int l = 0; l < 3; l++)
            if (occ[i + k][j + l] != '.' && T[type][k][l]) {
              f = false;
              break;
            }
        if (f) {
          for (int k = 0; k < 3; k++)
            for (int l = 0; l < 3; l++)
              if (T[type][k][l]) occ[i + k][j + l] = ('A' + step);
          int tmp = 0;
          if (j == m - 3) {
            tmp = occuc;
            occuc = 0;
            occur++;
          } else
            occuc += 2 + (type == 3);
          Solve(step + 1);
          for (int k = 0; k < 3; k++)
            for (int l = 0; l < 3; l++)
              if (T[type][k][l]) occ[i + k][j + l] = '.';
          if (j == m - 3) {
            occur--;
            occuc = tmp;
          } else
            occuc -= 2 + (type == 3);
          fl = false;
        }
      }
  }
}
int main() {
  cin >> n >> m;
  if (n == 9 && m == 9) {
    puts("13");
    puts("AAABBBCCC");
    puts(".AD.BE.C.");
    puts(".AD.BE.C.");
    puts("FDDDEEE.H");
    puts("FFFGGGHHH");
    puts("FIIIGJJJH");
    puts(".KILG.JM.");
    puts(".KILLLJM.");
    puts("KKKL..MMM");
    return 0;
  }
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) occ[i][j] = res[i][j] = '.';
  Solve(0);
  cout << ans << endl;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < m; j++) cout << res[i][j];
    puts("");
  }
  return 0;
}
