#include <bits/stdc++.h>
using namespace std;
const int MAX = 4;
int d[MAX + 10][MAX + 10];
int sum[MAX + 10];
string s[MAX + 10];
int abs(int a) {
  if (a < 0) return -a;
  return a;
}
bool is_done() {
  int s = 0;
  for (int i = 0; i < MAX; i++)
    for (int j = i + 1; j < MAX; j++) s += abs(d[i][j]);
  return (s == 0);
}
bool any_zero() {
  for (int i = 0; i < MAX; i++)
    if (sum[i] <= 0) return true;
  return false;
}
bool is_equal() {
  for (int i = 1; i < MAX; i++)
    if (sum[i] != sum[i - 1]) return false;
  return true;
}
int MAXP() {
  int mp = 0;
  for (int i = 0; i < MAX; i++)
    if (sum[i] > sum[mp]) mp = i;
  return mp;
}
int main() {
  ios::sync_with_stdio(false);
  for (int i = 0; i < MAX; i++)
    for (int j = i + 1; j < MAX; j++) {
      cin >> d[i][j];
      d[j][i] = d[i][j];
      sum[i] += d[i][j];
      sum[j] += d[i][j];
    }
  while ((!is_done()) && (!any_zero())) {
    if (!is_equal()) {
      int mp = MAXP();
      s[mp] += 'a';
      for (int i = 0; i < MAX; i++)
        if (i != mp) {
          s[i] += 'b';
          d[i][mp]--;
          d[mp][i]--;
          sum[i]--;
          sum[mp]--;
        }
    } else {
      int mn = 1;
      for (int i = 2; i < MAX; i++)
        if (d[i][0] < d[mn][0]) mn = i;
      s[0] += 'a';
      s[mn] += 'a';
      sum[0] -= 2;
      sum[mn] -= 2;
      for (int i = 1; i < MAX; i++)
        if (i != mn) {
          s[i] += 'b';
          d[0][i]--;
          d[i][0]--;
          d[mn][i]--;
          d[i][mn]--;
          sum[i] -= 2;
        }
    }
  }
  if (!is_done()) {
    cout << -1 << endl;
    return 0;
  }
  cout << s[0].size() << endl;
  for (int i = 0; i < MAX; i++) cout << s[i] << endl;
  return 0;
}
