public static void main( String[] args )
    {
		EightPuzzle eightPuzzle = null;
		if(args.length == 1) {
			eightPuzzle = new EightPuzzle(args[0]);
		}
		else if(args.length == 2) {
			eightPuzzle = new EightPuzzle(args[0], args[1], 3);
		}
		else if(args.length == 3) {
			if(args[2].matches("\\d+")) {
				eightPuzzle = new EightPuzzle(args[0], args[1], Integer.parseInt(args[2]));
			}
			else {
				eightPuzzle = new EightPuzzle(args[0], args[1], 3);
			}
		}
		else {
			System.err.println("Invalid number of arguments");
		}
        //EightPuzzle eightPuzzle = new EightPuzzle("src/main/java/com/vivek/puzzle/eightpuzzle/input.txt","src/main/java/com/vivek/puzzle/eightpuzzle/goal.txt", 3);
        //EightPuzzle eightPuzzle = new EightPuzzle("src/main/java/com/vivek/puzzle/eightpuzzle/input.txt");
		if(eightPuzzle != null) {
			Problem eightPuzzleProblem = eightPuzzle.formulateProblem(eightPuzzle.formulateGoal());
			List<Action> solution = eightPuzzle.search(eightPuzzleProblem);
			System.out.println("Initial State");
			System.out.println("-------------");
			System.out.println(eightPuzzle.getInitialPuzzleState());
			System.out.println("Goal State");
			System.out.println("-----------");
			System.out.println(eightPuzzle.getGoalPuzzleState());
			System.out.println("Number of Steps to reach the solution = " + solution.size() + "\n");
			System.out.println("Steps");
			System.out.println("-----");
			for(Action action: solution) {
				System.out.println(action);
			}
		}
		else {
			System.err.print("Please check the arguments passed");
		}
    }