#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

#define NEAR(a, b, t) (((a) == (b))                     || \
                       ((a) < (b) && (a) + (t) >= (b))  || \
                       ((a) > (b) && (a) - (t) <= (b)))

int main(int argc, char *argv[]) {
  int i, len, y, x;
  char *str;

  str = argv[1];
  if (argc < 2)
    str = "abcdefghijklmnopqrstuvwxyz";
  len = strlen(str);

  for (i = 0; i < len; i++) {
    switch (str[i]) {
      case 'a':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 7, 1) || NEAR(x, 2, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'b':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 5, 1) || x && NEAR(y, 10, 1) || NEAR(x, 2, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'c':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 10, 1) || NEAR(x, 2, 1)) ? "*": " ");
        break;
      case 'd':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && x < 9 && NEAR(y, 1, 1) || x && x < 9 && NEAR(y, 10, 1) || NEAR(x, 2, 1) || y && y < 10 && NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'e':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 5, 1) || x && NEAR(y, 10, 1) || NEAR(x, 2, 1)) ? "*": " ");
        break;
      case 'f':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 6, 1) || NEAR(x, 2, 1)) ? "*": " ");
        break;
      case 'g':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && x > 5 && NEAR(y, 5, 1) || x && NEAR(y, 10, 1) || NEAR(x, 2, 1) || y > 5 && NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'h':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 5, 1) || NEAR(x, 2, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'i':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 10, 1) || NEAR(x, 5, 1)) ? "*": " ");
        break;
      case 'j':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 10, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'l':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 10, 1) || NEAR(x, 1, 1)) ? "*": " ");
        break;
      case 'n':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(x, y, 1) || NEAR(x, 2, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'o':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 10, 1) || NEAR(x, 2, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'p':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 5, 1) || NEAR(x, 2, 1) || y < 6 && NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'r':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 5, 1) || NEAR(x, 2, 1) || y < 6 && NEAR(x, 9, 1) || x > 5 && y > 5 && NEAR(x, y, 1)) ? "*": " ");
        break;
      case 's':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 5, 1) || x && NEAR(y, 10, 1) || y < 5 && NEAR(x, 2, 1) || y > 5 && NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 't':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || NEAR(x, 5, 1)) ? "*": " ");
        break;
      case 'u':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 10, 1) || NEAR(x, 2, 1) || NEAR(x, 9, 1)) ? "*": " ");
        break;
      case 'x':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((NEAR(x, y, 1) || NEAR(10 - x, y, 1)) ? "*" : " ");
        break;
      case 'z':
        for (y = 0; y < 11; y++, printf("\n"))
          for (x = 0; x < 11; x++)
            printf((x && NEAR(y, 1, 1) || x && NEAR(y, 10, 1) || NEAR(10 - x, y, 1)) ? "*": " ");
        break;
      default:
        printf("\n\n\n\n");
    }
    printf("\n\n");
  }

  return EXIT_SUCCESS;
}

