/*
TASK:roulette
LANG:C++
*/

#include <cstdio>
#include <cstring>

const int MAXMOVE = 24;
const int LIMIT = 49;

char buf[MAXMOVE];
int bl;

int a[6];

//int left[5][5][5][5][5][5];
int opt[5][5][5][5][5][5];

bool rec (int i1, int i2, int i3, int i4, int i5, int i6) {
    if (opt[i1][i2][i3][i4][i5][i6] != -1) return opt[i1][i2][i3][i4][i5][i6];
//	if (i1 + i2 * 2 + i3 * 3 + i4 * 4 + i5 * 5 + i6 * 6 > LIMIT) return opt[i1][i2][i3][i4][i5][i6] = 1;

//	printf ("%d %d %d %d %d %d\n", i1, i2, i3, i4, i5, i6);

	if (i1 == a[0] && i2 == a[1] && i3 == a[2] && i4 == a[3] && i5 == a[4] && i6 == a[5]) {
		if (i6 < 4 && !rec (i1    , i2    , i3    , i4    , i5    , i6 + 1)) {printf ("6\n"); return opt[i1][i2][i3][i4][i5][i6] = 1;}
		if (i5 < 4 && !rec (i1    , i2    , i3    , i4    , i5 + 1, i6    )) {printf ("5\n"); return opt[i1][i2][i3][i4][i5][i6] = 1;}
		if (i4 < 4 && !rec (i1    , i2    , i3    , i4 + 1, i5    , i6    )) {printf ("4\n"); return opt[i1][i2][i3][i4][i5][i6] = 1;}
		if (i3 < 4 && !rec (i1    , i2    , i3 + 1, i4    , i5    , i6    )) {printf ("3\n"); return opt[i1][i2][i3][i4][i5][i6] = 1;}
    	if (i2 < 4 && !rec (i1	  , i2 + 1, i3    , i4    , i5    , i6    )) {printf ("2\n"); return opt[i1][i2][i3][i4][i5][i6] = 1;}
		if (i1 < 4 && !rec (i1 + 1, i2    , i3    , i4    , i5    , i6    )) {printf ("1\n"); return opt[i1][i2][i3][i4][i5][i6] = 1;}
        printf ("0\n");
		return opt[i1][i2][i3][i4][i5][i6] = 0;
    } else {
		if (i6 < 4 && !rec (i1    , i2    , i3    , i4    , i5    , i6 + 1)) return opt[i1][i2][i3][i4][i5][i6] = 1;
		if (i5 < 4 && !rec (i1    , i2    , i3    , i4    , i5 + 1, i6    )) return opt[i1][i2][i3][i4][i5][i6] = 1;
		if (i4 < 4 && !rec (i1    , i2    , i3    , i4 + 1, i5    , i6    )) return opt[i1][i2][i3][i4][i5][i6] = 1;
		if (i3 < 4 && !rec (i1    , i2    , i3 + 1, i4    , i5    , i6    )) return opt[i1][i2][i3][i4][i5][i6] = 1;
    	if (i2 < 4 && !rec (i1	  , i2 + 1, i3    , i4    , i5    , i6    )) return opt[i1][i2][i3][i4][i5][i6] = 1;
		if (i1 < 4 && !rec (i1 + 1, i2    , i3    , i4    , i5    , i6    )) return opt[i1][i2][i3][i4][i5][i6] = 1;
		return opt[i1][i2][i3][i4][i5][i6] = 0;
	}
}

int main () {
	scanf ("%s", buf);
    bl = strlen (buf);


    int i;
    for (i = 0;i < bl; ++i)
    	++a[buf[i]-'1'];

//    printf ("here!\n");
/*
    for (i = 0; i < 6; ++i)
    	printf ("%d ", a[i]);
    printf ("\n");
*/
    int i1, i2, i3, i4, i5, i6;

    for (i1 = 0; i1 < 5; ++i1)
	    for (i2 = 0; i2 < 5; ++i2)
    		for (i3 = 0; i3 < 5; ++i3)
			    for (i4 = 0; i4 < 5; ++i4)
				    for (i5 = 0; i5 < 5; ++i5)
                    	for (i6 = 0; i6 < 5; ++i6)


    for (i1 = 0; i1 < 5; ++i1)    
	    for (i2 = 0; i2 < 5; ++i2)
    		for (i3 = 0; i3 < 5; ++i3)
			    for (i4 = 0; i4 < 5; ++i4)
				    for (i5 = 0; i5 < 5; ++i5)
                    	for (i6 = 0; i6 < 5; ++i6) {
    						opt[i1][i2][i3][i4][i5][i6] = -1;
							if (i1 + i2 * 2 + i3 * 3 + i4 * 4 + i5 * 5 + i6 * 6 > LIMIT) opt[i1][i2][i3][i4][i5][i6] = 1;
                        }

    printf ("%c ", (bl & 1 ? 'T' : 'G'));

    rec (a[0], a[1], a[2], a[3], a[4], a[5]);

//    printf ("here!\n");

/*
	if (opt[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]]) {
    	if (a[5] < 4 && !opt[a[0]][a[1]][a[2]][a[3]][a[4]][a[5]+1]) {printf ("6\n"); goto end;}
    	if (a[4] < 4 && !opt[a[0]][a[1]][a[2]][a[3]][a[4]+1][a[5]]) {printf ("5\n"); goto end;}
    	if (a[3] < 4 && !opt[a[0]][a[1]][a[2]][a[3]+1][a[4]][a[5]]) {printf ("4\n"); goto end;}
    	if (a[2] < 4 && !opt[a[0]][a[1]][a[2]+1][a[3]][a[4]][a[5]]) {printf ("3\n"); goto end;}
    	if (a[1] < 4 && !opt[a[0]][a[1]+1][a[2]][a[3]][a[4]][a[5]]) {printf ("2\n"); goto end;}
    	if (a[0] < 4 && !opt[a[0]+1][a[1]][a[2]][a[3]][a[4]][a[5]]) {printf ("1\n"); goto end;}
    	printf ("nowhere!\n");
    } else {
		printf ("0\n");
    }
*/

    return 0;
}

