/*****************************/
/** Eprog Bsp. 1005, mittel **/
/** By Ernst Schwartz		**/
/** MatNr. 0004444			**/
/** Ernst_Schwartz@gmx.at	**/
/*****************************/


import eprog.*;

public class boolsyn extends EprogIO {

	public static final char[] possibleSymbols = { '(', ')', 'a', 'b', 'c', 'V', '&', '-', '=' };
	public static String input;
	public static char[] arrayInput;

	static boolean checkPossibleSymbols(char[] arrayInput)
	{
		int errorCount = 0;


		for (int i = 0; i<arrayInput.length; i++)
		{

			for (int j = 0; j < possibleSymbols.length; j++)
			{
				if (arrayInput[i] != possibleSymbols[j])
					errorCount++;
				else
					break;
			}

			if (errorCount >= possibleSymbols.length)
				return true;
			else
				errorCount = 0;
		}

		return false;

	} // end of checkPossibleSymbols


	static boolean checkLastSymbol(char[] arrayInput)
	{

		if ( (arrayInput[arrayInput.length-1]) != ('=') )
			return true;
		else
			return false;

	} // end of checkLastSymbol

	static boolean checkMinVariables(char[] arrayInput)
	{

		int variablesCount = 0, junktorsCount= 0;

		for (int i = 0; i<arrayInput.length; i++)
		{
			if (arrayInput[i] == 'a' ||  arrayInput[i] == 'b' || arrayInput[i] == 'c')
				variablesCount++;
			if (arrayInput[i] == 'V' || arrayInput[i] == '&')
				junktorsCount++;
		}

		if (variablesCount < 2 || junktorsCount < 1)
			return true;
		else
			return false;


	} // end of checkMinVariables


	static boolean checkKlammern(char[] arrayInput)
	{
		int offeneKlammernCount = 0;

		for (int i = 0; i<arrayInput.length; i++)
		{
			if (arrayInput[i] == '(')
				offeneKlammernCount++;
			else if (arrayInput[i] == ')')
				offeneKlammernCount--;

			if (offeneKlammernCount < 0)
				return true;
		}

		if (offeneKlammernCount != 0)
			return true;
		else
			return false;

	} // end of checkKlammern


	static boolean checkFolge1(char[] arrayInput)
	{

		boolean error = false;

		for (int i = 0; i < (arrayInput.length-1); i++)
		{
			if (arrayInput[i] == 'a' || arrayInput[i] == 'b' || arrayInput[i] == 'c' || arrayInput[i] == ')')
			{
				if (arrayInput[i+1] != ')' && arrayInput[i+1] != '=' && arrayInput[i+1] != 'V' && arrayInput[i+1] != '&')
				{
					error = true;
					break;
				} else
					error = false;
			}
		}

		return error;

	} // end of checkFolge1


	static boolean checkFolge2(char[] arrayInput)
	{

		boolean error = false;

		for (int i = 0; i < (arrayInput.length-1); i++)
		{
			if (arrayInput[i] == 'V' || arrayInput[i] == '&' || arrayInput[i] == '-' || arrayInput[i] == '(')
			{
				if (	arrayInput[i+1] != 'a' && arrayInput[i+1] != 'b' && arrayInput[i+1] != 'c'
						&& arrayInput[i+1] != '(' && arrayInput[i+1] != '-'
				   )
				{
					error = true;
					break;
				} else
					error = false;
			}
		}

		return error;

	} // end of checkFolge2



	static boolean runCheckUp(char[] arrayInput)
	{
		boolean error = false;

		if	(	checkPossibleSymbols(arrayInput) || checkLastSymbol(arrayInput) || checkMinVariables(arrayInput)
				|| checkKlammern(arrayInput) || checkFolge1(arrayInput) || checkFolge2(arrayInput)
			)
				error = true;

		return error;
	}



	public static void main (String args[]) {

		input = readWord();
		arrayInput = input.toCharArray();

		if (runCheckUp(arrayInput))
			println("FALSCHE EINGABE");
		else
			println("OK");



	} // end of main;


} // end of clas boolsyn;