// ===== EXAM PART 2 =====

public class Puzzle {
    // EXAM: Instance variables go here.

    // Constructor builds an array of WordPath objects.
    public Puzzle(String filename) {
        // EXAM: Your code goes here.
    }

    // Return the number of cols on the board.   
    public int getCols() {
        // EXAM: Your code goes here.
    }

    // Return the number of rows on the board.   
    public int getRows() {
        // EXAM: Your code goes here.
    }

    // Return number of WordPath objects.
    public int getNumWordPaths() {
        // EXAM: Your code goes here.
    }

    // Return the i-th WordPath object in
    // the same order as in the input file.
    // Argument i is in the range [0,n-1] 
    // where n is the number of word paths.
    public WordPath wordPathAt(int i) {
        // EXAM: Your code goes here.
    }


    // ===== TESTING -- DO NOT EDIT BELOW HERE =====

    // Main method provided. [DO NOT EDIT]
    public static void main(String[] args) {

        // Read a puzzle from a file named on the command line.
        Puzzle puzzle = new Puzzle(args[0]);

        // Get info from puzzle.
        int cols = puzzle.getCols();
        int rows = puzzle.getRows();
        int n = puzzle.getNumWordPaths();

        // Print the puzzle to the console.
        StdOut.println("Puzzle size: " + cols + " cols, " + rows + " rows.");
        StdOut.println("Words in puzzle (" + n + "):");
        for (int i = 0; i < n; i++) {
            WordPath wp = puzzle.wordPathAt(i);
            StdOut.println(wp);
        }
    }

}