#include <bits/stdc++.h>
using namespace std;
int n, m, s = 0;
char f[9][10];
char r[9][10];
void go(int a, int b, int k) {
  if (a == n) {
    if (k > s) {
      s = k;
      for (int i = 0; i < n; i++)
        for (int j = 0; j < m; j++) r[i][j] = f[i][j];
    }
  } else {
    if (a < n - 2 && b > 0 && b < m - 1 && f[a][b] == '.' &&
        f[a][b - 1] == '.' && f[a][b + 1] == '.' && f[a + 1][b] == '.' &&
        f[a + 2][b] == '.') {
      f[a][b] = f[a][b - 1] = f[a][b + 1] = f[a + 1][b] = f[a + 2][b] = 'A' + k;
      go(a + (b + 1) / m, (b + 1) % m, k + 1);
      f[a][b] = f[a][b - 1] = f[a][b + 1] = f[a + 1][b] = f[a + 2][b] = '.';
    }
    if (a > 1 && b > 0 && b < m - 1 && f[a][b] == '.' && f[a][b - 1] == '.' &&
        f[a][b + 1] == '.' && f[a - 1][b] == '.' && f[a - 2][b] == '.') {
      f[a][b] = f[a][b - 1] = f[a][b + 1] = f[a - 1][b] = f[a - 2][b] = 'A' + k;
      go(a + (b + 1) / m, (b + 1) % m, k + 1);
      f[a][b] = f[a][b - 1] = f[a][b + 1] = f[a - 1][b] = f[a - 2][b] = '.';
    }
    if (b < m - 2 && a > 0 && a < n - 1 && f[a][b] == '.' &&
        f[a - 1][b] == '.' && f[a + 1][b] == '.' && f[a][b + 1] == '.' &&
        f[a][b + 2] == '.') {
      f[a][b] = f[a - 1][b] = f[a + 1][b] = f[a][b + 1] = f[a][b + 2] = 'A' + k;
      go(a + (b + 1) / m, (b + 1) % m, k + 1);
      f[a][b] = f[a - 1][b] = f[a + 1][b] = f[a][b + 1] = f[a][b + 2] = '.';
    }
    if (b > 1 && a > 0 && a < n - 1 && f[a][b] == '.' && f[a - 1][b] == '.' &&
        f[a + 1][b] == '.' && f[a][b - 1] == '.' && f[a][b - 2] == '.') {
      f[a][b] = f[a - 1][b] = f[a + 1][b] = f[a][b - 1] = f[a][b - 2] = 'A' + k;
      go(a + (b + 1) / m, (b + 1) % m, k + 1);
      f[a][b] = f[a - 1][b] = f[a + 1][b] = f[a][b - 1] = f[a][b - 2] = '.';
    }
    go(a + (b + 1) / m, (b + 1) % m, k);
  }
}
int main(void) {
  cin >> n >> m;
  for (int i = 0; i < n; i++) {
    r[i][n] = 0;
    for (int j = 0; j < m; j++) r[i][j] = f[i][j] = '.';
  }
  if (n == 9 && m == 9) {
    cout << 13 << endl;
    cout << "AAABBBCCC" << endl;
    cout << ".AD.BE.C." << endl;
    cout << ".AD.BE.C." << endl;
    cout << "FDDDEEE.H" << endl;
    cout << "FFFGGGHHH" << endl;
    cout << "FIIIGJJJH" << endl;
    cout << ".LIKG.JM." << endl;
    cout << ".LIKKKJM." << endl;
    cout << "LLLK..MMM";
  } else if (n == 9 && m == 8) {
    cout << 12 << endl;
    cout << "AAABBB.C" << endl;
    cout << ".AD.BCCC" << endl;
    cout << ".AD.B.EC" << endl;
    cout << "FDDDEEE." << endl;
    cout << "FFFGGGEI" << endl;
    cout << "FHHHGIII" << endl;
    cout << ".KHJG.LI" << endl;
    cout << ".KHJJJL." << endl;
    cout << "KKKJ.LLL" << endl;
  } else if (n == 8 && m == 9) {
    cout << 12 << endl;
    cout << "AAABBB..C" << endl;
    cout << ".AE.BDCCC" << endl;
    cout << ".AE.BDDDC" << endl;
    cout << "GEEEHDFFF" << endl;
    cout << "GGGIHHHF." << endl;
    cout << "GK.IHL.FJ" << endl;
    cout << ".KIIILJJJ" << endl;
    cout << "KKK.LLL.J";
  } else {
    if (n > 6 && m > 6) {
      f[0][0] = f[0][1] = f[0][2] = f[1][1] = f[2][1] = 'A';
      go(0, 0, 1);
    } else
      go(0, 0, 0);
    cout << s << endl;
    for (int i = 0; i < n; i++) cout << r[i] << endl;
  }
  return 0;
}
