Problem Statement
Elly has a rectangular matrix with N rows and M columns. Each of the cells in the matrix can be either blocked (denoted '#') or free (denoted '.').
An empty cell is called a view point if we can see outside the matrix when looking directly in each of the four cardinal directions: north, south, east, and west. In other words, a cell C is a view point if and only if all cells in those four directions from cell C are free.
Below is an example matrix that contains six view points. One of these is marked by an asterisk ('*').
..#...... .....*... .###..#.. .#.##..#. ...#..#.. .........
The girl has given you the
Definition
- Class:
- EllysViewPoints
- Method:
- getCount
- Parameters:
- int, int, String[]
- Returns:
- int
- Method signature:
- int getCount(int N, int M, String[] matrix)
- (be sure your method is public)
Constraints
- N will be between 1 and 50, inclusive.
- M will be between 1 and 50, inclusive.
- matrix will contain exactly N elements.
- Each element of matrix will contain exactly M characters.
- Each character in matrix will be either '#' or '.'.
Examples
6
9
{"..#......", ".........", ".###..#..", ".#.##..#.", "...#..#..", "........."}
Returns: 6
The example from the problem statement.
1
1
{"."}
Returns: 1
It's pretty obvious which cell is the view point.
7
4
{"####", "####", "####", "####", "####", "####", "####"}
Returns: 0
With everything blocked, there are obviously no view points.
9
48
{"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "................................................", ".#####...###...###.......##....###....##..#####.", "...#....#.....#...#.....#..#..#...#..#.#..#...#.", "...#....#.....#...#........#..#...#....#..#####.", "...#....#.....#...#......#....#...#....#......#.", "...#.....###...###......####...###.....#..#####.", "................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#."}
Returns: 18
Good luck!
20
33
{"...#............#.........#......", ".................................", "................#.....#.#......#.", ".................................", "........#..............##..#.....", "...#.....#.............#..##...#.", "....................##..#.#......", ".......#..............#...##.....", ".........#......#...#..#...#.....", "......................#....#.....", "..........................#......", ".................#..#.#...#......", ".................................", ".......................##.#......", "#......#.#...........#....#......", "#......#..............#...##.....", ".................................", "........#........................", ".................................", ".......................#........."}
Returns: 90
1
1
{"."}
Returns: 1
7
4
{"....", "....", "....", "....", "....", "....", "...."}
Returns: 28
1
42
{".........................................."}
Returns: 42
42
1
{".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}
Returns: 42
27
27
{"...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", ".............#.............", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "...........................", "..........................."}
Returns: 676
50
50
{"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#"}
Returns: 0
50
50
{"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "..................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", ".................................................."}
Returns: 625
50
50
{"##################################################", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "#................................................#", "##################################################"}
Returns: 0
50
50
{"..................................................", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".################################################.", ".................................................."}
Returns: 4
50
50
{"..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", "..................................................", ".................................................."}
Returns: 2500
50
50
{"##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################", "##################################################"}
Returns: 0
47
42
{"#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "..........................................", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################", "#################.########################"}
Returns: 1
50
50
{"#................................................#", ".#..............................................#.", "..#............................................#..", "...#..........................................#...", "....#........................................#....", ".....#......................................#.....", "......#....................................#......", ".......#..................................#.......", "........#................................#........", ".........#..............................#.........", "..........#............................#..........", "...........#..........................#...........", "............#........................#............", ".............#......................#.............", "..............#....................#..............", "...............#..................#...............", "................#................#................", ".................#..............#.................", "..................#............#..................", "...................#..........#...................", "....................#........#....................", ".....................#......#.....................", "......................#....#......................", ".......................#..#.......................", "........................##........................", "........................##........................", ".......................#..#.......................", "......................#....#......................", ".....................#......#.....................", "....................#........#....................", "...................#..........#...................", "..................#............#..................", ".................#..............#.................", "................#................#................", "...............#..................#...............", "..............#....................#..............", ".............#......................#.............", "............#........................#............", "...........#..........................#...........", "..........#............................#..........", ".........#..............................#.........", "........#................................#........", ".......#..................................#.......", "......#....................................#......", ".....#......................................#.....", "....#........................................#....", "...#..........................................#...", "..#............................................#..", ".#..............................................#.", "#................................................#"}
Returns: 0
10
5
{"..##.", ".....", ".....", ".....", "...#.", ".....", ".....", ".....", ".....", "#...."}
Returns: 14
10
5
{".#...", ".....", ".....", ".....", ".....", ".....", "...#.", ".#...", ".#...", "....."}
Returns: 18
3
18
{"..................", ".....##..#.....#..", ".................."}
Returns: 28
3
18
{".#....#.#.#....#.#", "...#..#.#.........", ".#.........##....."}
Returns: 0
15
11
{"..#.......#", "......#....", "..........#", "..#........", "#.#.......#", "...........", "...........", "...........", "...##......", ".........#.", "..........#", "....#..#...", "....#......", "........#..", ".......#..."}
Returns: 6
20
30
{".....#........................", "..............................", "..............................", "..............................", "...#..........................", "........#...#.................", "..............................", "..............................", "............#............#....", "..............................", "...........................#..", ".....#........................", "..............................", ".....................#........", "..............................", "...........#..........#.......", "..............................", "......#...............#.......", "............................#.", ".............................."}
Returns: 190
20
30
{"..#....#......................", "....#...........#....#........", "..#................##.........", "...#.............#............", "#...........................#.", "..##.#...#...................#", "......#..#...................#", ".........#...#....#..........#", "......#..................#....", "......##........##............", "..#.......#...........#..#....", "..#.............#.............", "....#...#...................#.", "........#......#..............", ".#...#.............#....##....", ".....#.##.................#...", "...............#....#...##....", "..............................", ".....#........#..............#", "#.................#..#........"}
Returns: 4
25
25
{".........................", ".............#.......##..", "..................#......", ".........................", ".........................", ".........................", "..................#......", ".....#.......#.......#...", ".........................", ".....#...#....#....#.....", ".....#............#......", ".........................", "...#...........#.........", "#.....#..................", "#......#.................", "................#........", "....................#....", "...................#.....", "..#......#...........#...", ".........................", "...#.....................", "..#.....................#", ".........................", ".........................", ".............#..........."}
Returns: 72
25
25
{"...#..#..#......##.......", ".#..#...#................", "................#......#.", ".........................", "........#..#.....#.......", "......#....#.#........#..", "......#...........#...#.#", ".#.............##......#.", ".#.##.....#.#.#..#.......", ".#..#....#.......#.......", ".............#.......#...", "......#...............##.", ".....#...................", "...#.#..#.......#........", "..............#.....#.##.", "##.#.......#....#........", "..#..............#.#.....", ".#.......................", "..#................#.....", "..#.##..##.#.#...........", "......#..........#..#....", "......#..............#...", "..........#..#........#..", ".#.......................", ".##..##.............#...."}
Returns: 1
42
42
{"................#.........................", "..................#.......................", "....#..........#...............#.#........", "..........#...............................", "........................#...........#...#.", "..........................................", "..#.......................................", "...............................##.........", ".......#...............#....#.............", "..........#...............................", "........#...............#.........#......#", ".........................................#", "...................#......................", "..........................................", "..........#...............................", "........#.................................", ".........................#................", ".........................#......#..#......", "....#...........................#.........", "..#.............#..............#..........", ".......#..............#...............#...", "..........................................", ".....................#..#..........##.....", "....................#.....................", "...............#..........................", ".#........................................", "........................#......#..........", "...................#...........#..........", ".......#......................#...........", "....#..........................#..........", "................#....#.........#..........", "...............................#.......#..", "##...........................#............", ".#........................................", "......................................#...", "..#......#................................", "............#........#....................", "..........................#...............", "...#...............#......................", ".................#........................", "................................#...#.....", ".......................#.#................"}
Returns: 21
42
42
{"..........................................", "#.........................................", "..##......................................", "....................................#.....", "...................#.........#...........#", "..................##............#.........", "..#....#.#......#....#....................", "#......#......................#...........", "..#...#..#.....................#.#........", ".....#.#...............#.....#............", "..................................#.......", "..................#....................#..", ".............................#....##.....#", "................#.........................", "........#.............#......#............", ".........##......#...#..........#.......##", ".......................#...#..............", "#.......................#..#..............", "....#.....................#...............", "........#...#.............................", "..........................................", ".................##..............#........", "..........................................", ".........#...........##....#..............", "..#..................#....................", "..........................................", "#...............................#...#.....", ".............#..............#.............", "...#......................................", "...#......................................", "..............#........#..................", "......................#...................", "#.........#...............................", ".#..#.....................#.........#.....", "........###..................#.......#...#", ".......#............#.................#...", "........#............#.................#..", ".........#...#............................", ".................#.....#..........#.......", ".................................#........", "..............#...........#...............", "..................#.....#..#..#..........."}
Returns: 12
42
42
{".#...##.#.....#.#.#....#....###.#.#...#.##", "#...##....###.###.###...#..#..###..##..#..", "##.##..#..##...##.#.#.##........########.#", "..#..#.##...###....#.#.#.#####....##.....#", "##..#..#..#.#..#.#.#.##.###.......#.##...#", "#.#..###...##....#.......#.........#.#...#", ".###.#..#....####......#.#..####..#####.#.", "#.#....#..##.##.#.#...#.#.#.##..#..#..#..#", "#.###..##.#.##.....#........###...#....#..", "###....####..###....#..#..#.#..#......#.#.", "........#..#....#.##....#......##.#.##..##", ".###.#..##..#..#.#.##...#....#...###....#.", ".##...#.....#.#..##.....##.##.##.#######..", "#.#.....##....###.#..##....#.#####.##....#", "#.##..#..#....##.#.#..##.###....#.###.###.", "####..#...#.####..###.#.#...##...#.#..##.#", ".#....#...##....##..##....#####.###..#....", "......#..#..##.#...#.#.##....#.#####....#.", "#..##.#..#.###.#.#.####...#...###..##..#..", "#.#..#.#.##..#.###..###....#...###..#.....", "..#.#.#.####.....#.##.#...####..#..#.....#", ".........###..###.##..#.#..#..#######...#.", "###..#......#.#.#.#...###.#..#######...##.", "#....##....###......#...##..###..#.###..#.", "####...#.#.######.####.#.##.#...#.#....#..", "..#.##.......#..##..#..###...#...##..#.##.", ".##.##.#..##.###.#...#.#.##...#.....#.#.#.", "####.#.###..###.#..###..#...#..###.#.#..#.", ".##..#..#.#.#.....#..####.#.#.#...#..#####", "###....###.#..#.##.#..#####..#.##..#......", "..#.##.##.......#.##.#.....#.#.##..#..#..#", ".###.##.......#.#######.#######.#....#.#..", "#.#......#..##.##.#......#.#..#..###.###.#", "...###....##.##.#...###....#.......#...###", "..#####..###.#.#..#...#.#....#.......#####", "###....#.#.....###......#.....####......#.", ".######....##.###.##.........##..#.#...###", "#.###....##..##.#..######.....######.....#", "##.####.###....#.#.###.##.#.#...########..", ".#.#.##....#####...#..##.##..#....####...#", "#...##.#.##..####.#.##.###.#.####...#.####", "###...#.......#..#....#.##..#.....#.#..#.."}
Returns: 0
47
49
{".........................................#.......", ".................................................", "..............................................#..", ".............#.......#...........................", "........................................#........", ".................................................", "....#............................................", ".#...#..............#..........#.................", ".................................................", ".................................................", ".........................#.#.#...............#...", "...........#.....................................", "..........#......................................", ".................................................", ".................................................", "..................................#..............", "..........#.....................#.........#......", "......#..........................................", ".................................................", ".................................#....#..........", "..............#..................................", "........................#...................#..#.", "..........#......................................", "#...................#.................#.....##.#.", ".................................................", ".....#..#.........##........................#....", "................................#................", "....#..............................#.............", ".................................................", "...........#.....................................", ".................#...............................", "...........................#.....................", "...............#.#.......#.......................", ".................................................", "..................#.........#..........#.........", ".................................................", "....................#....................#.......", "...........................................#.....", "...........#.......#..........#..................", "................#................................", "........#......................#.................", "...............................................#.", ".....#........................................#..", ".................................................", ".......#.#....#..........#.......................", ".....#...........................................", "................................................."}
Returns: 117
47
49
{"..........................................#......", ".................................................", "#................#..#...........#................", "...#.............#...##............#........#....", "..............................#..................", ".....#......................#..#.................", "..#...........#...#.....#.........#..............", "..........................#..................#...", "..............................#...........#......", "...#.......#.........##....................#.....", ".............................#......##...........", "............#.#.........................#........", "..............#..................................", ".................................................", "..............#..................................", "..................#..#..........#................", "...................................#.....#.......", "............#.....................#.......#......", ".............#...................................", "............#..........................#........#", ".#.........#..............................#......", "...................#.#...........................", ".....................#...........................", "...................#............##...............", "........#.............#...............#..#.......", ".................................................", "......##.........................................", "......#.........................#................", ".................................#..............#", "...#.....#...............................#.#.....", "....................#...#....................#...", "..........#................#...............#.....", "..........#............#.........................", "......#.................#....................#...", ".................................#......#........", ".......................#.........................", "........#..#.....................................", "..#.....................#..#......#....#.........", "...#.....#......##...................#..#........", "...................................#............#", "..........#.........#...........................#", ".................................................", ".........#....#...............##....#............", "..#..#...........................................", "........#........................................", ".............#.................................#.", ".................................#........##....#"}
Returns: 16
47
49
{"......#..............#............#..#....#......", "....#....#..........#....##.#.#..........#.#.....", "#..................#..................#..#.....#.", "...#.........#...................#...#...........", "..##..............#..............................", "...............................##..........#.....", ".....#..........#...#.....#..................#...", "..................#..........................#...", "...##............#...............................", ".........#........#.#..##........................", "....#......#.......#........#....#......#........", "......#..............###...........#...........##", ".......#....#..........#.........................", ".......#...............#..............#......#...", ".............#.........#..............#..........", "...................................#....#......#.", "........#.#.#........#.#...#.....#.........#.#...", "..............................##............#...#", "......#...#...#.#..................#....##...#...", "..#.................#...#..............#..#......", ".#.........#.....#............#..................", "....#.....#........#..#.........#................", ".#.#.....................#.#.#...............#...", "...##...........#...#.#.....#.......#.......##...", "...#...........#.....##.............#............", "##...............................................", "..#........#..#.........#........................", "...................##.........#..........#.......", ".........#..............#........................", ".......................#.....................#...", ".........................##..#..#..#.#...........", ".....#.#...................#......#......###.....", "..........#.#..........#.#.....#......#..........", ".....#.#..............#..........#..#...........#", "..#.##....##.....##....................#.........", "......#.........#...........#..............#.....", "....#........#......#......#...#..#.##...........", "..........#..............#..........#........#...", "#..#.....#.............#..............#.#.#......", ".............#....#.#............................", "..#.................##..#.............#..........", ".#.#...........#................#...#.......#....", "...............#...#.#.#.........................", ".##....#.......................#...#........#....", "........................##......#................", "....#..#.##.#......#.#...#...#....#.#.......#....", "##...#....................................#......"}
Returns: 0
49
44
{"................#..........................#", "#......#.............#.....#.#...........#..", "..........#.......#......................#..", "..................#...#.#.........#........#", ".....#.................##.#.....#.....#..#..", "....#.#.#.......#..#.......#..#.............", ".....##..#..............................#...", "#.....................#.#....#..............", "..#...........#................#........#...", "....................#...#.........#.........", ".....#.........##..#............#...........", "#......#...#.......................#.......#", "......#.........#.#.......#..#..............", "...........................#.....#..........", "........#..........##........#..........##..", "............................................", "..###.#......#................##..#.....#...", "...................#......##..##............", ".................#..#............#..........", ".....#.##...........#..#....................", "#.....#......#.........#....................", "....#..............#.........#..............", ".......##..................#..........#...#.", "..........#....#.##.........................", "#..........#.##....#.#.....#................", "..........#.........#......#................", ".......##...#...#......#......#............#", "...............#................#...........", ".#...#..###.#........#........##...........#", ".......##.....................##..#.........", "..#......##....#....#...#...................", "..##..................#.#....#...##........#", ".#......................#....#..............", "..........#.........##.#....................", "..#...#........#..#.....#........#........#.", "...................##.............#.......#.", "...##.....#.#....###...##......#.#....#.....", "...#.#.#....#..................#......#.....", ".........#........................#.........", ".......................#....................", "................#.................##........", "....#........#.........#................#...", "#...........##.....#........................", "....#......#.....##.....#...................", ".....#.##..............#.................#..", "..............#..#......................#...", ".#..............#...........................", ".....#....##..................#.............", "............................................"}
Returns: 10
22
15
{".#..#.#.#.##...", "##..#....###...", "..#.#..........", "###.#.#.#.##...", "...............", "#.#.#.#.#.##...", "###.#...###....", "...............", "##..#.#.##.#...", ".##.#.#.####...", "...............", "...............", "....#.#.#..#...", "###......##....", "...............", "...............", "#...#...#.#....", "...............", "........##.#...", "###.#.#.###....", "##..#.#..###...", "..............."}
Returns: 48
2
26
{"..........................", ".#....#.#......######.#..."}
Returns: 16
14
23
{".......................", ".......................", "...............#...#...", "....#..................", "....#..................", ".............#.........", ".......................", ".........#.............", "................#......", ".......................", "...#...................", ".......................", ".......................", "......................."}
Returns: 112
42
31
{"######.#.#..###....#....#..#.#.", "...............................", "...............................", "...............................", ".#.###.....#.##..####...#......", "###..#.#.#..##.....##...#..#.#.", "##.###.#.#.####.........#..#.#.", ".#.#.#.....####..###....#....#.", "...............................", "...............................", "...............................", "...............................", "...............................", "##.###.#.#.##.#..#..#...#..#...", "#.#..#.#.#.#..#..####...#..#.#.", "...............................", "...............................", "...............................", ".###.#.#.#..###..##.....#..#.#.", "...............................", "#.##.#...#.####..###....#..#...", "...............................", "...............................", "##.#.#.#.#..#....####...#....#.", "...............................", "#.##.#.#.#..###..####......#.#.", ".###.#.#.#.####...###......#.#.", ".#.###.#...###...#..#...#..#.#.", "...............................", "##.##..#.#...##..##.#...#..#...", "...............................", "...............................", "...............................", ".#.#.#.#....###..####...#..#...", "###..#...#..##...#.##...#..#...", "...............................", "######.#...##.#..###....#..#.#.", "...............................", "...............................", "##.###...#.####..###....#..#...", "...............................", "..............................."}
Returns: 288
48
2
{"..", ".#", "..", "..", "#.", ".#", "..", "..", "#.", "#.", "..", "..", ".#", ".#", "##", "#.", "..", "#.", ".#", "..", ".#", "##", "#.", "#.", "..", "..", "..", "..", "..", "..", "#.", "##", ".#", "..", "##", ".#", "##", "#.", "##", "#.", ".#", "..", "..", "#.", "..", "#.", "##", ".#"}
Returns: 0
9
5
{".###.", "..#..", ".....", ".....", "#..#.", ".#...", ".....", "...#.", "...#."}
Returns: 3
47
20
{"....................", "#..#.....######.#.#.", ".....#..###.###.....", "....................", "..##.#..##.#.#..#...", "...#.#.#.#####..#.#.", "...#.#..#######.#.#.", "#.##.#.##.#..##.#.#.", "#..#...#.#...##...#.", "..#..#.#####.##.#.#.", "#.#..#...##.......#.", "..##.#.#..###.#.....", "....................", "....................", "....................", "....................", "#..#...##.#.#.#.#.#.", "#.##.#.#.#.#....#...", "#.#....###.#.##.#.#.", "...#.#.###....#...#.", "....................", ".......########.#.#.", "#.##....#.#...#.#.#.", "#.##....####.##.#...", "#.##.#..###..##.....", "#.##.#.##.##..#.#.#.", "#..#...####.#.#.#...", "..##.#.#.#.##.#.#...", "#..#.#..#####.#.#...", "#..#.#..##.#.##.#...", "#.##.#...###....#.#.", "#.##.#.#.####...#...", "#.##....#.....#.#.#.", "..##.#....#####.#...", "#.##.#.#.##..#..#.#.", "....................", "#.##.#.##...#.#.#...", "#.##.#.#.#..###.#.#.", "#..#.#.....##...#.#.", "#.##....#####.....#.", "....................", "#.#..#.#.#.##.....#.", "...#...#.#.####.#.#.", "....................", "..#..#..#...##......", "#..#.#...#.##.#.#.#.", "..##...###.#..#...#."}
Returns: 60
30
28
{".###.#.#..........#........#", ".#.#.#.#.#..#...#..#...#..##", "............................", "............................", "............................", "............................", ".#...#.#.#..#...#.#....#..##", ".##..#......#...#.##.......#", "####.#...#..#...#.#.......#.", "###.............#.##......#.", "............................", "............................", "............................", "............................", "............................", ".##..#.#.#..#.....##...#..#.", "............................", "##.#........#...#.##...#..##", "####.#.#.#......#.##...#..#.", "####.#.#.#........##...#...#", ".##..#.#.#..#..........#....", "............................", "............................", "............................", "..#......#..#......#...#...#", "............................", "####.#...#..#...#.........##", "####.#.#....#...............", "####.#.#.#..#...#.##...#...#", ".###.#......#...#..#...#...."}
Returns: 196
24
43
{".........................#........#..#....#", "..........#.....................#.........#", "...........................#............###", "...........................................", "...............#...........#..#............", "...#.......#..................#............", "...................#........#.....#...##...", "...............#.....#...#...#.............", "............#..........#......#.......#....", "..........#.#..#............#...........#..", "...........#...............##.#.......#.#..", "...#...............#.......................", "...........................................", "#...................#.........#..........#.", "...................#....##....#.......#....", ".#.................#.#......#....#......##.", "...........................................", "...........................................", ".................#...#...#....#..#...##.#..", "...........................................", "...#...................#....##.......#.....", "#......................#.........#....#..#.", "...................#.......................", ".......................##...#.............."}
Returns: 80
45
6
{"......", "......", "......", "....##", "#..#.#", "......", ".....#", "......", ".....#", "...#..", ".....#", ".....#", "#..#..", "...##.", "......", "...#..", "....#.", "....##", "#.....", "......", ".....#", "......", "......", "......", "....#.", "......", "#.....", "......", "#.....", "#...#.", "......", ".....#", "#....#", "#..###", "#..#..", "#.....", "...##.", "......", ".....#", "....#.", "....#.", "....#.", "#..##.", "......", "...###"}
Returns: 30
12
49
{"....#.####.#.....####..###..#...#####...##.#.#..#", ".#.#######.###.#.###..####..##..######.#.#..##.##", "##.###.#....#.#..#..#.#####..##.#.####..##..##.##", "....######..##.#.#.##.#..##.#.#.##.###..##.##....", "##..#.####.#..##.#..#.##......#.######..#..#.#.##", "##.##.#.#..#####.####.#.##....#.####.#...#.#.#.#.", "##.##..##..#####...#..#..##.#.#.#.####..#...##..#", "##.###.###.##.#..#.#..#####.###.#.##.#..##.###.##", "##.#######.#####.####.####..##..##...#.###.##...#", ".#.#######.#####.####.###.#.###.######...#.....##", "##.#####.#.#####..###.##.##.##..######.###.#....#", "##..######.#.###..#.#..####.###.#####..#...###..."}
Returns: 0
8
23
{".......................", "....#..#.#.............", ".......................", "..#......#.#......#.#..", "#................#.####", "#.#..##....#....#......", "#.#................#..#", "......................."}
Returns: 24
7
26
{"####.##..###.##..##....#.#", "####.##...##.##..##..#.#.#", ".###.###.##..##...#..#.#.#", "####.###.###.##..#...#....", "..........................", "#.##.###.##..##..##..#.#.#", "####.###.###.##..#...#.#.#"}
Returns: 9
25
14
{".#....#..#.#..", "..##..#..#..#.", ".#.#.#.##..#..", "..#....#...#..", ".###.#.#......", ".....#..##..#.", ".###...###.##.", "..##...###..#.", ".##..#####.#..", ".##.........#.", ".#.#....#..##.", "..#..#.##.....", "...#.###...##.", ".###.####..#..", "...#....##....", ".##..###...##.", ".###.##.#...#.", ".#...#.##..##.", ".##...#..#.#..", ".#...##.#...#.", ".#...###.#..#.", ".##..###...##.", ".###.###...##.", "..##.#........", ".....#####.#.."}
Returns: 0
40
42
{"...#.#....................#....#....#.....", ".#................#.#...#.#...........#...", ".#...#.#.......#..##...#..#...#....#......", ".....#..#...............#...#......#......", ".....#..#......#.##.....#.........##..#...", "..........................................", "#...................#....#....#.......##..", ".##...#...#............#.............#...#", "..........................................", "#....#..#.#......#......###....#.........#", "#..#....#........#.##..##.#......#..#.....", "#.............................#...##......", "......#...#....#.....#....#......#...###..", ".......#....................#..#.#.#..#...", "..#...#..........#..#................#...#", "..#...#...#........#........#.#...........", "#.##......#.#.......#.....#....#..##.##...", "..........................................", "##...............#..#................#...#", "#.#.........#....#.......#...#...#.#......", "...#.#......#..#.##.......#.##.#.#.....#.#", ".##..##............#.........#.#......#...", ".#.............#.....#......##.#..........", "..........................................", "..........................................", "..........................................", ".#....#.....#.......#..................#.#", "..........................................", ".......#.........#.......#..#......#.#...#", ".....#..............#.........#...#..#...#", "..##..##.#.....#.####..#.#..##...........#", "#.........#....#..#......#.....#..........", "..........................................", "..........................................", "..#...#.###..............#..##...#.....#..", "..........................................", "..........................................", "..........................................", ".....#..#...#......#.........#......##....", ".###..##..#......##.#...#..........#.#...."}
Returns: 108
44
45
{"#..............#.....#.......................", ".#..#..........#...#........................#", ".......##.......#.....#.#....................", ".............................##......#..#....", ".#.#..........#....#..#......#............#..", "...#.................#..#.........##....#....", ".............................................", "...#...........#......#..#...#...#....#......", "..#.....................#....................", ".#..#............#.#.#....#.....##.........#.", ".............................................", ".............................................", "..##..##.......#...................#.......##", "...##..........#.............#...#...........", ".............................................", ".............................................", ".............................................", ".##..............#.#....#.....#...#.....##...", "..........#..#...............#...............", "..#....#........#....................#...#..#", "........#.......................#...#........", "....#...#...#..................#.............", ".............................................", ".............................................", ".............................................", ".......#.........#....#...#..#...#.#.........", ".##.............#............#....#..........", "#......#...........#....#.#......##......#...", "#.#...........#..#........................#..", "........#......#..........#....#..#.......#..", "#.....###......................#......#...#..", ".............................................", ".............................................", "#............#...#.........................#.", ".............................................", "..............##.................##....###...", "..#...##....#.#..#...#..............#.....#..", "....#.#..............#...........#.#.........", "......#...#...................#.....##.....#.", "......#...............#..................##..", ".#..#.....#......................###..#......", ".#............#..........................#..#", "#..............#......#.......#.##...........", "...#........###.......#................#....."}
Returns: 96
6
42
{"....##..#....##..#.##.#...........#...#.#.", ".........#.............#.#.....#..##.....#", "...#.......#.#...#.........#.#..#.#....##.", "..........................................", "......#.....#..###..#.....#....###.#.#.#..", "......##......####....#.#..##.......##..#."}
Returns: 7
9
48
{"#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.", "................................................", ".#####...###...###.......##....###....##..#####.", "...#....#.....#...#.....#..#..#...#..#.#..#...#.", "...#....#.....#...#........#..#...#....#..#####.", "...#....#.....#...#......#....#...#....#......#.", "...#.....###...###......####...###.....#..#####.", "................................................", "#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#.#." }
Returns: 18
1
4
{"...." }
Returns: 4
6
9
{"..#......", ".........", ".###..#..", ".#.##..#.", "...#..#..", "........." }
Returns: 6
4
4
{"####", "....", "####", "####" }
Returns: 0
1
1
{"#" }
Returns: 0
1
1
{"." }
Returns: 1
3
3
{"...", ".#.", "..." }
Returns: 4