#include <bits/stdc++.h>
using namespace std;
int counter = 0;
int ans = -1;
int n, m;
char a[15][15];
char z[15][15];
inline int ok(int x, int y) {
  return (x >= 0 && y >= 0 && x < n && y < m && a[x][y] == '.');
}
void rec(int x, int y) {
  if (counter + (n * m - x * m - y) / 5 <= ans) return;
  if (a[x][y] != '.') {
    if (y == m) {
      x++;
      y = 0;
    } else {
      y++;
      if (y == m) {
        x++;
        y = 0;
      }
    }
    if (x == n) {
      if (counter > ans) {
        ans = counter;
        for (int i = 0; i < n; i++)
          for (int j = 0; j < m; j++) z[i][j] = a[i][j];
      }
    } else
      rec(x, y);
    return;
  }
  if (ok(x, y) && ok(x, y + 1) && ok(x, y + 2) && ok(x + 1, y + 1) &&
      ok(x + 2, y + 1)) {
    a[x][y] = a[x][y + 1] = a[x][y + 2] = a[x + 1][y + 1] = a[x + 2][y + 1] =
        counter + 'A';
    counter++;
    rec(x, y + 1);
    counter--;
    a[x][y] = a[x][y + 1] = a[x][y + 2] = a[x + 1][y + 1] = a[x + 2][y + 1] =
        '.';
  }
  if (ok(x, y) && ok(x + 1, y) && ok(x + 2, y - 1) && ok(x + 2, y) &&
      ok(x + 2, y + 1)) {
    a[x][y] = a[x + 1][y] = a[x + 2][y - 1] = a[x + 2][y] = a[x + 2][y + 1] =
        counter + 'A';
    counter++;
    rec(x, y + 1);
    counter--;
    a[x][y] = a[x + 1][y] = a[x + 2][y - 1] = a[x + 2][y] = a[x + 2][y + 1] =
        '.';
  }
  if (ok(x, y) && ok(x + 1, y) && ok(x + 2, y) && ok(x + 1, y + 1) &&
      ok(x + 1, y + 2)) {
    a[x][y] = a[x + 1][y] = a[x + 2][y] = a[x + 1][y + 1] = a[x + 1][y + 2] =
        counter + 'A';
    counter++;
    rec(x, y + 1);
    counter--;
    a[x][y] = a[x + 1][y] = a[x + 2][y] = a[x + 1][y + 1] = a[x + 1][y + 2] =
        '.';
  }
  if (ok(x, y) && ok(x + 1, y) && ok(x + 2, y) && ok(x + 1, y - 1) &&
      ok(x + 1, y - 2)) {
    a[x][y] = a[x + 1][y] = a[x + 2][y] = a[x + 1][y - 1] = a[x + 1][y - 2] =
        counter + 'A';
    counter++;
    rec(x, y + 1);
    counter--;
    a[x][y] = a[x + 1][y] = a[x + 2][y] = a[x + 1][y - 1] = a[x + 1][y - 2] =
        '.';
  }
  if (ok(x, y)) {
    if (y == m) {
      x++;
      y = 0;
    } else {
      y++;
      if (y == m) {
        x++;
        y = 0;
      }
    }
    rec(x, y);
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < m; j++) {
      a[i][j] = '.';
      z[i][j] = '.';
    }
  if (n == 9 && m == 9) {
    cout << 13 << endl;
    cout << "AAABBBCCC\n";
    cout << ".AD.BE.C.\n";
    cout << ".AD.BE.C.\n";
    cout << "FDDDEEE.G\n";
    cout << "FFFHHHGGG\n";
    cout << "FIIIHJJJG\n";
    cout << ".KILH.JM.\n";
    cout << ".KILLLJM.\n";
    cout << "KKKL..MMM\n";
    return 0;
  } else if (n >= 3 && m >= 3) {
    rec(0, 0);
    cout << ans << endl;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) cout << z[i][j];
      cout << endl;
    }
  } else {
    cout << 0 << endl;
    for (int i = 0; i < n; i++) {
      for (int j = 0; j < m; j++) cout << a[i][j];
      cout << endl;
    }
  }
  return 0;
}
