#include <bits/stdc++.h>
using namespace std;
const int N = 10;
const int dx[4][5] = {0,  0,  0, 1, 2, -1, 0, 0, 0, 1,
                      -2, -1, 0, 0, 0, -1, 0, 0, 0, 1};
const int dy[4][5] = {-1, 0, 1,  0, 0, 0, -2, -1, 0, 0,
                      0,  0, -1, 0, 1, 0, 0,  1,  2, 0};
char Ans[N][N], a[N][N];
int n, m, ans;
bool check(int x, int y) {
  for (int t = 0; t < 4; ++t) {
    bool ovo = 1;
    for (int i = 0; i < 5; ++i) {
      int X = x + dx[t][i], Y = y + dy[t][i];
      if (X <= 0 || X > n || Y <= 0 || Y > m || a[X][Y] != '.') ovo = 0;
    }
    if (ovo) return 1;
  }
  return 0;
}
bool dfs(int x, int y, int s, int num) {
  if (y > m) y = 1, x++;
  if (s == ans) return 1;
  if (num / 6 + s < ans) return 0;
  for (; !check(x, y) && x <= n;) {
    y++;
    if (y > m) y = 1, x++;
  }
  if (x > n) return 0;
  for (int t = 0; t < 4; ++t) {
    bool ovo = 1;
    for (int i = 0; i < 5; ++i) {
      int X = x + dx[t][i], Y = y + dy[t][i];
      if (X <= 0 || X > n || Y <= 0 || Y > m || a[X][Y] != '.') ovo = 0;
    }
    if (ovo) {
      char c = s + 'A';
      for (int i = 0; i < 5; ++i) {
        int X = x + dx[t][i], Y = y + dy[t][i];
        a[X][Y] = c;
      }
      if (dfs(x, y + 1, s + 1, num - 5)) return 1;
      for (int i = 0; i < 5; ++i) {
        int X = x + dx[t][i], Y = y + dy[t][i];
        a[X][Y] = '.';
      }
    }
  }
  return dfs(x, y + 1, s, num);
}
int main() {
  scanf("%d%d", &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(".LIKG.JM.");
    puts(".LIKKKJM.");
    puts("LLLK..MMM");
    return 0;
  }
  for (int i = 1; i <= n; ++i)
    for (int j = 1; j <= m; ++j) a[i][j] = '.';
  for (ans = 0; ans < 20 && dfs(0, 0, 0, n * m); ++ans) {
    for (int i = 1; i <= n; ++i)
      for (int j = 1; j <= m; ++j) Ans[i][j] = a[i][j], a[i][j] = '.';
  }
  printf("%d\n", ans - 1);
  for (int i = 1; i <= n; ++i) {
    for (int j = 1; j <= m; ++j) cout << Ans[i][j];
    puts("");
  }
  return 0;
}
