To use the visualizer, you'll have to adopt your solution to read parameters from standard in and write the output to standard out. Your program should first read the number of lines in the grid N. The following N lines will contain the elements of grid. The final line of the input will contain H. Finally, you should output N lines containing the elements of your return and flush standard out. To do this, you should implement the following pseudocode:
    N = int(readLine())
    for (i=0; i<N; i++)
        grid[i] = readLine()
    H = int(readline)
    grille = bestGrille(grid)
    for (i=0; i<N; i++)
Note that to use the dictionary in your solution you'll have to implement your own getWords() method to read and parse file words.txt. You can use standard error to output your debug info.

To run the visualizer with your solution, you should run:
java -jar GrilleReconstruction.jar -exec "<command>" -seed <seed>
Here, <command> is the command to execute your program, and <seed> is seed for test case generation. Additionally you can use options -output to print intermediate data of processing your return (like the decrypted message and the words which are counted in the score) and -vis <name> to generate a file <name>.png which illustrates the process of applying the grille to the grid. If you set <name> to a single dash, the output will be displayed in a window instead of written to a file.