#include <bits/stdc++.h>
using namespace std;
void perdi() {
  puts("-1");
  exit(0);
}
int d12, d13, d14, d23, d24, d34;
char r[4][1 << 20];
int n, xx, yy;
bool doit() {
  int x, y, z;
  if ((d14 + d24 - d12) % 2) return false;
  z = (d14 + d24 - d12) / 2;
  if ((-d24 + d12 - d34 + xx + yy) % 2) return false;
  x = (-d24 + d12 - d34 + xx + yy) / 2;
  y = d14 - x - z;
  if (x < 0 || y < 0 || z < 0 || x + y > d12 || x > xx || z > yy ||
      y > d12 - xx)
    return false;
  for (int i = 0, ThxDem = x; i < ThxDem; ++i) r[3][i]++;
  for (int i = xx, ThxDem = xx + y; i < ThxDem; ++i) r[3][i]++;
  for (int i = d12, ThxDem = d12 + z; i < ThxDem; ++i) r[3][i]++;
  return true;
}
int main() {
  scanf("%d%d%d%d%d%d", &d12, &d13, &d14, &d23, &d24, &d34);
  memset(r, 'a', sizeof(r));
  for (int i = 0, ThxDem = d12; i < ThxDem; ++i) r[1][i]++;
  if ((d13 + d23 - d12) % 2) perdi();
  yy = (d13 + d23 - d12) / 2;
  xx = d13 - yy;
  if (xx < 0 || yy < 0 || xx > d12) perdi();
  for (int i = 0, ThxDem = xx; i < ThxDem; ++i) r[2][i]++;
  for (int i = d12, ThxDem = d12 + yy; i < ThxDem; ++i) r[2][i]++;
  n = d12 + yy;
  while (d14 >= 0 && d24 >= 0 && d34 >= 0 && !doit()) {
    d14--;
    d24--;
    d34--;
    r[3][n++]++;
  }
  if (d14 < 0 || d24 < 0 || d34 < 0) perdi();
  printf("%d\n", n);
  for (int i = 0, ThxDem = 4; i < ThxDem; ++i) r[i][n] = 0, puts(r[i]);
  return 0;
}
