#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <cstring>
#include<vector>
#include<iostream>
#include<map>
#include<algorithm>
using namespace std;
//读入一个字符串,字符串中包含ZOJ三个字符,个数不一定相等,
//按ZOJ的顺序输出,当某个字符用完时,剩下的仍然按照ZOJ的顺序输出。
//每组用例占一行,包含ZOJ三个字符。 1<=length<=100。
int main()
{
char str[101];
scanf("%s", str);
char s1[100];
char s2[100];
char s3[100];
int k=0, l=0, m=0;
for (int i = 0; i < strlen(str); i++)
{
if (str[i] == 'Z')
{
s1[k] = str[i];
k++;
}
if (str[i] == 'O')
{
s2[l] = str[i];
l++;
}
if (str[i] == 'J')
{
s3[m] = str[i];
m++;
}
}
s1[k] = '\0';
s2[l] = '\0';
s3[m] = '\0';
int maxnum0 = max(k,l);
int maxnum = max(maxnum0,m);
for (int i = 0; i < maxnum; i++)
{
if (i<k)
{
printf("%c", s1[i]);
}
if (i<l)
{
printf("%c", s2[i]);
}
if (i<m)
{
printf("%c", s3[i]);
}
}
printf("\n");
return 0;
}