#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cassert>
using namespace std;
char s[1000005];
int cnt[3],num[2],val[3];
char nw[1000005];int len,l,p,q;
void init(){
	len=0;
	memset(cnt,0,sizeof(cnt));
	for(int i=1;i<=l;i++)if(s[i]!=s[i-1]){
		nw[++len]=s[i];
		cnt[s[i]-'A']++;
	}
	swap(s,nw); l=len;
	p=q=0;
	for(int i=1;i<=2;i++){
		if(cnt[i]<cnt[p])p=i;
		if(cnt[i]>cnt[q])q=i;
	}
	if(p==q)q=(q+1)%3;
	memset(num,0,sizeof(num));
	memset(val,0,sizeof(val));
	s[l+1]=p+'A';
	for(int i=1,lst=0;i<=l+1;i++)
		if(s[i]-'A'==p){
			if(i-lst==2){
				if(lst!=0&&i!=l+1)num[s[i-1]-'A'==q]++;
				else val[(s[i-1]-'A')==q]++;
			}else if(i-lst>2){
				if(s[lst+1]!=s[i-1])val[2]++;
				else val[(s[i-1]-'A')==q]+=2;
			}
			lst=i;
		}
}
int main(){
	scanf("%s",s+1);
	l=strlen(s+1);
	init();
	// s[l+1]=0; puts(s+1);
	if((cnt[q]-cnt[3^p^q])>(val[1]+val[2])){
		len=0;
		int k=(cnt[q]-cnt[3^p^q])-(val[1]+val[2]);
		s[l+1]=p+'A';
		for(int i=1,lst=0;i<=l+1;i++){
			if(s[i]-'A'==p){
				if(k&&i-lst==2&&lst!=0&&i!=l+1&&s[i-1]-'A'==q){lst=i; k--;continue;}
				lst=i;
			}
			if(i!=l+1)nw[++len]=s[i];
		}
		swap(nw,s);
		l=len;
		init();
	}
	// s[l+1]=0; puts(s+1);
	assert((cnt[q]-cnt[3^p^q])<=(val[1]+val[2]));
	if(cnt[q]>cnt[3^p^q]){
		int w=cnt[q]-cnt[3^p^q];
		len=0;
		s[l+1]=p+'A';
		for(int i=1,lst=0;i<=l+1;i++)
			if(s[i]-'A'==p){
				if(i-lst==2){
					if(!w||((lst>0&&i<=l)||s[i-1]-'A'!=q))nw[++len]=s[i-1];
					else w--;
				}else if(i-lst>2){
					if(s[lst+1]!=s[i-1]){
						for(int j=lst+1+(w&&s[lst+1]-'A'==q);j<=i-1-(w&&s[i-1]-'A'==q);j++)nw[++len]=s[j];
						if(w)w--; 
					}else{
						if(s[i-1]-'A'==q){
							for(int j=lst+1+(w>0);j<=i-1-(w>1);j++)nw[++len]=s[j];
							if(w)w--;
							if(w)w--;
						}else{
							for(int j=lst+1;j<=i-1;j++)nw[++len]=s[j];
						}
					}
				}
				if(i!=l+1)nw[++len]=s[i];
				lst=i;
			}
		swap(nw,s);
		l=len;
		init();
	}
	// s[l+1]=0; puts(s+1);
	assert(cnt[q]==cnt[3^p^q]);
	int e=cnt[3^p^q]-cnt[p];
	s[l+1]=p+'A';
	for(int i=1,lst=0;i<=l+1;i++)
		if(s[i]-'A'==p){
			if(i-lst==2)putchar(s[i-1]);
			else if(i-lst>2){		
				int t=min(e,(i-lst-1)/2-(s[lst+1]!=s[i-1]&&lst!=0&&i!=l+1));
				for(int j=lst+1+t*2;j<=i-1;j++)putchar(s[j]);
				e-=t;
			}
			if(i!=l+1)putchar(s[i]);
			lst=i;
		}
	return 0;
}