Ternary numeric notation is quite popular in Berland. To telegraph the ternary number the Borze alphabet is used. Digit 0 is transmitted as «.», 1 as «-.» and 2 as «--». You are to decode the Borze code, i.e. to find out the ternary number given its representation in Borze alphabet.

Input

The first line contains a number in Borze code. The length of the string is between 1 and 200 characters. It's guaranteed that the given string is a valid Borze code of some ternary number (this number can have leading zeroes).

Output

Output the decoded ternary number. It can have leading zeroes.

Examples

Input

.-.--


Output

012

Input

--.


Output

20

Input

-..-.--


Output

1012
#include <bits/stdc++.h>
using namespace std;
struct NODE {
  long long val, cost;
};
long long parent[100010];
long long dis[100010];
bool vis[100010];
vector<NODE> G[100010];
long long isprime(long long a0) {
  long long n = a0, a = 0;
  if (n == 2) {
    return 1;
  }
  if (n == 1) {
    return 0;
  }
  for (long long i = 2; i * i <= n; i++) {
    if (n % i == 0) {
      a = 1;
      break;
    }
  }
  if (a == 1) {
    return 0;
  } else {
    return 1;
  }
}
void _init() {
  for (long long i = 0; i < 100010; i++) {
    parent[i] = i;
    dis[i] = 100000000000000;
  }
}
class cmp {
 public:
  bool operator()(NODE &A, NODE &B) {
    if (A.cost > B.cost) return true;
    return false;
  }
};
void FIND(long long node) {
  if (node == parent[node]) {
    cout << node;
    return;
  }
  FIND(parent[node]);
  cout << " " << node;
}
void dijkstra(long long x) {
  priority_queue<NODE, vector<NODE>, cmp> PQ;
  PQ.push({x, 0});
  while (!PQ.empty()) {
    long long val = PQ.top().val;
    long long cost = PQ.top().cost;
    PQ.pop();
    if (vis[val] == 1) continue;
    vis[val] = 1;
    dis[val] = cost;
    long long k = G[val].size();
    for (long long i = 0; i < k; i++) {
      int nxt = G[val][i].val;
      int nxtCost = G[val][i].cost;
      if (!vis[nxt]) {
        if (cost + nxtCost < dis[nxt]) {
          dis[nxt] = cost + nxtCost;
          parent[nxt] = val;
        }
        PQ.push({nxt, cost + nxtCost});
      }
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  ;
  string s;
  cin >> s;
  for (int i = 0; i < s.length();) {
    if (s[i] == '-' && s[i + 1] == '.') {
      cout << 1;
      i += 2;
    } else if (s[i] == '-' && s[i + 1] == '-') {
      cout << 2;
      i += 2;
    } else {
      cout << 0;
      i++;
    }
  }
  return 0;
}
