#include <bits/stdc++.h>
using namespace std;
int GCD(int a, int b) {
  if (!a) return b;
  return GCD(b % a, a);
}
void init() {}
struct ss {
  int go;
  int rest;
};
vector<ss> V;
int main() {
  clock_t startTime = clock();
  init();
  int n;
  cin >> n;
  if (n == 0) {
    cout << "O-|-OOOO";
    return 0;
  }
  while (n > 0) {
    int x = n % 10;
    n /= 10;
    ss tmp;
    if (x >= 5) {
      tmp.go = 1;
      x -= 5;
    } else
      tmp.go = 0;
    tmp.rest = x;
    V.push_back(tmp);
  }
  for (int i = 0; i < V.size(); i++) {
    if (V[i].go == 1) {
      cout << "-O|";
    } else
      cout << "O-|";
    for (int j = 0; j < V[i].rest; j++) {
      cout << "O";
    }
    cout << "-";
    for (int j = 0; j < 4 - V[i].rest; j++) {
      cout << "O";
    }
    cout << "\n";
  }
  clock_t endTime = clock();
  fprintf(stderr, "\nTime: %.5f seconds\n",
          double(endTime - startTime) / CLOCKS_PER_SEC);
  return 0;
}
