#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;
}