Problem Statement
The rows and columns of the labyrinth are numbered using integers. The rows are infinite in both directions, so for every integer i (including negative integers) there's a row numbered i. The columns are numbered 0 to W-1, inclusive. A cell in row i and column j is denoted as (i,j).
If you are located in a free cell (i,j), you can perform one of the following actions:
- Walk to another free cell (x,y) adjacent by side to (i,j). In other words, (x,y) must be such that |i-x| + |j-y| = 1. It is impossible to walk outside of the labyrinth.
- If cell (i,j) contains a teleport, you can use it to be transferred to another free cell from the same row that contains a teleport (there's always exactly one such cell). Note that when you are located in a cell with a teleport, it isn't necessary to use the teleport.
You are given a
Return the minimum number of moves needed to get from cell (r1,c1) to cell (r2,c2). If it is impossible, return -1.
Definition
- Class:
- InfiniteLab
- Method:
- getDistance
- Parameters:
- String[], long, int, long, int
- Returns:
- long
- Method signature:
- long getDistance(String[] map, long r1, int c1, long r2, int c2)
- (be sure your method is public)
Notes
- The start and finish cells (r1,c1) and (r2,c2) are guaranteed to be distinct free cells.
Constraints
- map will contain between 1 and 20 elements, inclusive.
- Each element of map will contain between 1 and 20 characters, inclusive.
- All elements of map will contain the same number of characters.
- Each character in map will be either '#', '.' or 'T'.
- Each element of map will contain either 0 or 2 'T' characters.
- r1 and r2 will each be between -10^15 and 10^15, inclusive.
- c1 and c2 will each be between 0 and W-1, inclusive, where W is the number of characters in each element of map.
- Cells (r1,c1) and (r2,c2) will both be free cells.
- Cells (r1,c1) and (r2,c2) will be distinct.
Examples
{"#...##", ".##...", "..#.##", "#.#.##"}
1
0
5
3
Returns: 7
The optimal path is drawn below. Here 'S' means the start cell, 'F' means the finish cell and 'P' means an intermediate cell. #...## S##... PP#.## #P#.## #PPP## .##F.. ..#.## #.#.## Note that the labyrinth is infinite, so only its part with rows 0 to 7, inclusive, is shown here and in subsequent examples.
{"##.#.", ".#T#T", "...#.", "##.#."}
7
4
1
0
Returns: 9
##.#. F#T#T PPP#. ##P#. ##P#. .#T#T ...#P ##.#S Here we need to use a teleport once.
{"..######.#", ".###T###.T", "..T#.##T##", ".######..#"}
1
0
6
4
Returns: 11
..######.# S###T###.T PPT#.##T## .######PP# ..######P# .###T###PT ..T#F##T## .######..# Here we need to use a teleport twice.
{"..#..", ".#.#.", "....."}
-29
2
19
2
Returns: 54
{".#.#.", "..#..", ".....", ".....", "..#.."}
-999
3
100
2
Returns: -1
{"#.#.#.#.##","#.#.#.#...","#.#.#..##.","#.#..#..#.","#..#..#.#.","#...#.#.#.","#.#.#.#.#.","#.#.#.#.#.","#.#.#.#.#.","#.#.#.#.#."}
999999999999999
1
9
9
Returns: 1000000000000066
{"#.#.#.#.##","#.#.#.#...","#.#.#..##.","#.#..#..#.","#..#..#.#.","#...#.#.#.","#.#.#.#.#.","#.#.#.#.#.","#.#.#.#.#.","#.#.#.#.#."}
4999
1
9
9
Returns: 5066
{"..#.#.#.##","#.#.#.#...","..#.#..##.",".##..#..#.","...#..#.#.","#...#.#.#.","..#.#.#.#.",".##.#.#.#.","..#.#.#.#.","#.#.#.#.#."}
999999999999999
1
9
9
Returns: 1400000000000076
{"....................", "###################.", "....................", ".###################"}
-999999999999997
0
999999999999998
19
Returns: 20999999999999938
{"##.#########.####.#", "##.#########......#", "##.##############.#", "##.##############.#", "##..............#.#", "###############.#.#", "##..............#.#", "##.##############.#", "##..............#.#", "###############.#.#", "##..............#.#", "##.##############.#", "##..............#.#", "###############.#.#", "######..........#.#", "######.##########.#", "##................#", "##.###.##########.#", "##.###.......####.#", "##.#########.####.#"}
1
2
18
10
Returns: 55
{"##.#########.####.#", "##.#########......#", "##.##############.#", "##.##############.#", "##..............#.#", "###############.#.#", "##..............#.#", "##.##############.#", "##..............#.#", "###############.#.#", "##..............#.#", "##.##############.#", "##..............#.#", "###############.#.#", "######..........#.#", "######.##########.#", "##................#", "##.###.##########.#", "##.###.......####.#", "##.#########.####.#"}
401
2
100000018
10
Returns: 99999655
{".###.#.##.#.#.##.#.#", ".T##.#.##.#.#.T#.#.#", ".###.#.##...#.##...#", "...#.#.##.#.#.##.###", "##.#.#.##.#.#.##.#.#", "T#.#.#T##.#.#.##.#.#", ".#.#.####.#.#.####.#", ".#.#.######.#.####.#", ".#.#...##...#.####.#", ".#.###.##.###.####.#", ".#.#.#.##.#...##...#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.######.#", ".#...#T##.#.###T##.#", ".###.#.##.#.###..#.#", ".###.#.##.#.####.#.#", ".###.#.##.#.####.#.#"}
15
9
7
18
Returns: 99
{".###.#.##.#.#.##.#.#", ".T##.#.##.#.#.T#.#.#", ".###.#.##...#.##...#", "...#.#.##.#.#.##.###", "##.#.#.##.#.#.##.#.#", "T#.#.#T##.#.#.##.#.#", ".#.#.####.#.#.####.#", ".#.#.######.#.####.#", ".#.#...##...#.####.#", ".#.###.##.###.####.#", ".#.#.#.##.#...##...#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.######.#", ".#...#T##.#.###T##.#", ".###.#.##.#.###..#.#", ".###.#.##.#.####.#.#", ".###.#.##.#.####.#.#"}
33
9
7
18
Returns: 100
{".###.#.##.#.#.##.#.#", ".T##.#.##.#.#.T#.#.#", ".###.#.##...#.##...#", "...#.#.##.#.#.##.###", "##.#.#.##.#.#.##.#.#", "T#.#.#T##.#.#.##.#.#", ".#.#.####.#.#.####.#", ".#.#.######.#.####.#", ".#.#...##...#.####.#", ".#.###.##.###.####.#", ".#.#.#.##.#...##...#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.######.#", ".#...#T##.#.###T##.#", ".###.#.##.#.###..#.#", ".###.#.##.#.####.#.#", ".###.#.##.#.####.#.#"}
15
9
25
18
Returns: 91
{".###.#.##.#.#.##.#.#", ".T##.#.##.#.#.T#.#.#", ".###.#.##...#.##...#", "...#.#.##.#.#.##.###", "##.#.#.##.#.#.##.#.#", "T#.#.#T##.#.#.##.#.#", ".#.#.####.#.#.####.#", ".#.#.######.#.####.#", ".#.#...##...#.####.#", ".#.###.##.###.####.#", ".#.#.#.##.#...##...#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.######.#", ".#...#T##.#.###T##.#", ".###.#.##.#.###..#.#", ".###.#.##.#.####.#.#", ".###.#.##.#.####.#.#"}
18015
9
7
18
Returns: 20360
{".###.#.##.#.#.##.#.#", ".T##.#.##.#.#.T#.#.#", ".###.#.##...#.##...#", "...#.#.##.#.#.##.###", "##.#.#.##.#.#.##.#.#", "T#.#.#T##.#.#.##.#.#", ".#.#.####.#.#.####.#", ".#.#.######.#.####.#", ".#.#...##...#.####.#", ".#.###.##.###.####.#", ".#.#.#.##.#...##...#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.######.#", ".#...#T##.#.###T##.#", ".###.#.##.#.###..#.#", ".###.#.##.#.####.#.#", ".###.#.##.#.####.#.#"}
15
9
36007
18
Returns: 40739
{".###.#.##.#.#.##.#.#", ".T##.#.##.#.#.T#.#.#", ".###.#.##...#.##...#", "...#.#.##.#.#.##.###", "##.#.#.##.#.#.##.#.#", "T#.#.#T##.#.#.##.#.#", ".#.#.####.#.#.####.#", ".#.#.######.#.####.#", ".#.#...##...#.####.#", ".#.###.##.###.####.#", ".#.#.#.##.#...##...#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.####.#.#", ".#.#.#.##.#.######.#", ".#...#T##.#.###T##.#", ".###.#.##.#.###..#.#", ".###.#.##.#.####.#.#", ".###.#.##.#.####.#.#"}
-179999999985
9
18000000000007
18
Returns: 20536666666739
{"#..T##T..#"}
0
1
10000
8
Returns: 10005
{".###.#####.#...###.", ".T#T.###...#.###...", ".###.###.###...#.##", "...#.###.#####.#...", "##.#.T#T.###...###.", "...#.###.###.###...", ".###...#.###.#...##", "...###.#.T#T.#.####", "##.#...#.###.#.....", "...#.###...#.#####.", ".###...###.#.T#T...", "...###.#...#.###.##", "##.#...#.###...#.##", "...#.###...###.#.##", ".###...###.#...#.##", ".T####.#...#.###.T#", ".###...#.###...#.##", ".###.###...###.#..."}
3
0
9
18
Returns: 26
{".###.#####.#...###.", ".T#T.###...#.###...", ".###.###.###...#.##", "...#.###.#####.#...", "##.#.T#T.###...###.", "...#.###.###.###...", ".###...#.###.#...##", "...###.#.T#T.#.####", "##.#...#.###.#.....", "...#.###...#.#####.", ".###...###.#.T#T...", "...###.#...#.###.##", "##.#...#.###...#.##", "...#.###...###.#.##", ".###...###.#...#.##", ".T####.#...#.###.T#", ".###...#.###...#.##", ".###.###...###.#..."}
-90000000000000
0
90000000000000
0
Returns: 300000000000000
{".###.#####.#...###.", ".T#T.###...#.###...", ".###.###.###...#.##", "...#.###.#####.#...", "##.#.T#T.###...###.", "...#.###.###.###...", ".###...#.###.#...##", "...###.#.T#T.#.####", "##.#...#.###.#.....", "...#.###...#.#####.", ".###...###.#.T#T...", "...###.#...#.###.##", "##.#...#.###...#.##", "...#.###...###.#.##", ".###...###.#...#.##", ".T####.#...#.###.T#", ".###...#.###...#.##", ".###.###...###.#..."}
9
2
0
18
Returns: 26
{".###.#####.#...###.", ".T#T.###...#.###...", ".###.###.###...#.##", "...#.###.#####.#...", "##.#.T#T.###...###.", "...#.###.###.###...", ".###...#.###.#...##", "...###.#.T#T.#.####", "##.#...#.###.#.....", "...#.###...#.#####.", ".###...###.#.T#T...", "...###.#...#.###.##", "##.#...#.###...#.##", "...#.###...###.#.##", ".###...###.#...#.##", ".T####.#...#.###.T#", ".###...#.###...#.##", ".###.###...###.#..."}
10
0
0
18
Returns: 29
{".#.#.#.#.#.#.#.#.#", "...#.#.#.#.#.#.#.#", ".###.#.#.#.#.#.#.#", ".#...#.#.#.#.#...#", ".#.###.#.#.#.#####", ".#.#...#.#.#.##...", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#.#...#", ".#.#.###.#.#.#T#T#", ".#.#.#...#.#.#.###", ".#.#.#.###.#.#T#T#", ".#.#.#.#...#.#T##T", ".#.#.#.#.###.###..", ".#.#.#.#.#...#...#", ".#.#.#.#.#.####T#T", ".#.#.#.#.#.#.#T##T", ".#.#.#.#.#.#.#T#T#", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#...#.#", ".#.#.#.#.#.#.#.#.#"}
5
16
5
0
Returns: 265
{".#.#.#.#.#.#.#.#.#", "...#.#.#.#.#.#.#.#", ".###.#.#.#.#.#.#.#", ".#...#.#.#.#.#...#", ".#.###.#.#.#.#####", ".#.#...#.#.#.##...", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#.#...#", ".#.#.###.#.#.#T#T#", ".#.#.#...#.#.#.###", ".#.#.#.###.#.#T#T#", ".#.#.#.#...#.#T##T", ".#.#.#.#.###.###..", ".#.#.#.#.#...#...#", ".#.#.#.#.#.####T#T", ".#.#.#.#.#.#.#T##T", ".#.#.#.#.#.#.#T#T#", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#...#.#", ".#.#.#.#.#.#.#.#.#"}
10
0
999999999999905
16
Returns: 1000000000000160
{".#.#.#.#.#.#.#.#.#", "...#.#.#.#.#.#.#.#", ".###.#.#.#.#.#.#.#", ".#...#.#.#.#.#...#", ".#.###.#.#.#.#####", ".#.#...#.#.#.##...", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#.#...#", ".#.#.###.#.#.#T#T#", ".#.#.#...#.#.#.###", ".#.#.#.###.#.#T#T#", ".#.#.#.#...#.#T##T", ".#.#.#.#.###.###..", ".#.#.#.#.#...#...#", ".#.#.#.#.#.####T#T", ".#.#.#.#.#.#.#T##T", ".#.#.#.#.#.#.#T#T#", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#...#.#", ".#.#.#.#.#.#.#.#.#"}
-100000000000000
0
10000000000005
17
Returns: 110000000000271
{".#.#.#.#.#.#.#.#.#", "...#.#.#.#.#.#.#.#", ".###.#.#.#.#.#.#.#", ".#...#.#.#.#.#...#", ".#.###.#.#.#.#####", ".#.#...#.#.#.##...", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#.#...#", ".#.#.###.#.#.#T#T#", ".#.#.#...#.#.#.###", ".#.#.#.###.#.#T#T#", ".#.#.#.#...#.#T##T", ".#.#.#.#.###.###..", ".#.#.#.#.#...#...#", ".#.#.#.#.#.####T#T", ".#.#.#.#.#.#.#T##T", ".#.#.#.#.#.#.#T#T#", ".#.#.#.#.#.#.###.#", ".#.#.#.#.#.#...#.#", ".#.#.#.#.#.#.#.#.#"}
19
0
1000000000000000
16
Returns: 1000000000000209
{"T###.###.###.###T###","...#...#...#...#...#",".#.###.###.###.###.#","...#...#...#...#...#","T###T###.###.###.###","...#...#...#...#...#","##.#.#.###.###.###.#","...#...#...#...#...#",".###T###T###.###.###","...#...#...#...#...#","##.###.#.#.###.###.#","...#...#...#...#...#",".###.###T###T###.###","...#...#...#...#...#","##.###.###.#.#.###.#","...#...#...#...#...#",".###.###.###T###T###","...#...#...#...#...#","##.###.###.###.#.#.#","...#...#...#...#...#"}
-1000000000000000
0
1000000000000000
0
Returns: 2500000000000000
{"T###.###.###.###T###","...#...#...#...#...#",".#.###.###.###.###.#","...#...#...#...#...#","T###T###.###.###.###","...#...#...#...#...#","##.#.#.###.###.###.#","...#...#...#...#...#",".###T###T###.###.###","...#...#...#...#...#","##.###.#.#.###.###.#","...#...#...#...#...#",".###.###T###T###.###","...#...#...#...#...#","##.###.###.#.#.###.#","...#...#...#...#...#",".###.###.###T###T###","...#...#...#...#...#","##.###.###.###.#.#.#","...#...#...#...#...#"}
-1000000000000000
0
1000000000000000
8
Returns: 2500000000000005
{"T###.###.###.###T###","...#...#...#...#...#",".#.###.###.###.###.#","...#...#...#...#...#","T###T###.###.###.###","...#...#...#...#...#","##.#.#.###.###.###.#","...#...#...#...#...#",".###T###T###.###.###","...#...#...#...#...#","##.###.#.#.###.###.#","...#...#...#...#...#",".###.###T###T###.###","...#...#...#...#...#","##.###.###.#.#.###.#","...#...#...#...#...#",".###.###.###T###T###","...#...#...#...#...#","##.###.###.###.#.#.#","...#...#...#...#...#"}
-1000000000000000
0
1000000000000000
4
Returns: 2500000000000008
{"....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","...................."}
-1000000000000000
0
1000000000000000
19
Returns: 2000000000000019
{"....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","...................."}
-1000000000000000
0
-1000000000000000
19
Returns: 19
{"....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","....................","...................."}
1000000000000000
0
1000000000000000
19
Returns: 19
{"TT.", "...", "T.T"}
2
0
-26
1
Returns: 29
{".#..", "....", ".###", "T..T"}
1
3
35
0
Returns: 37
{"..###", ".....", "TT###", "TT###", "....."}
2
0
-16
4
Returns: 22
{"...T.T.............."}
13397834057
19
68196735724
6
Returns: 54798901680
{".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", ".", "."}
325022564820
0
1684482383057
0
Returns: 1359459818237
{".....##.......T.T...", "...................."}
6095110755
14
48357678000
4
Returns: 42262567255
{"..", "TT", "..", "..", "..", "..", "TT", "TT", "..", "..", "..", "TT", "TT", "..", "..", "..", "..", "TT", "..", ".."}
5
1
-969360340698
0
Returns: 969360340704
{"....................", "#######.....T.T....#", "............#.#.##.."}
2
11
2
0
Returns: 11
{"...", ".##", ".##", ".#.", ".#.", ".#.", "T#T", ".#.", "T.T", "T#T", "T#T", "...", "T#T", ".##", "...", ".##", ".##", "...", ".##", ".##"}
-359956144098
0
-1792904998765
0
Returns: 1432948854667
{"..#.#", "T.#T#", "TT..#", "..#..", "..#.#"}
-657
0
3
4
Returns: 662
{".....", "...#.", "#TT##", "##.##", ".T.T."}
65709214710
2
517926539320
1
Returns: 452217324611
{"....#..#..", "..#T#.T...", "..#T#T##.#", "#...####.#", "#.#T..T#.#"}
-1563
1
-1977
2
Returns: 415
{".T..#T....", "#.###.T.#T", "T...#T....", "#.###..##.", ".TT.#...#."}
-193474666857
9
2
0
Returns: 193474666862
{"#.......#......", "...#.#.##T###T.", "######.#TT....#", "####T......T.##", "####.#....#.#.#"}
-566
7
-3537
5
Returns: 2973
{"T.######T#.##..", "T.######.#.##T.", ".T...........T.", ".......T.T..#..", "..............."}
3
0
-614868865523
10
Returns: 614868865529
{".###..######...#....", ".###..###..........#", ".####...T.T....#...#", ".####T#......T......", ".###..###T.....#T#.."}
-3209
10
0
17
Returns: 3212
{"....................", "#..#.##.#..#.####.#.", "#.T#.##.#..#.####.#T", "...............#....", ".....T.....#T####..."}
3198513895626
1
3
19
Returns: 3198513895625
{"T..T.", ".##TT", "T.#.T", ".T.T.", ".....", ".....", ".T.T.", "T...T", ".T..T", "T.#T#"}
-2502
2
4953
0
Returns: 7457
{"T.##T", "TT##.", ".TT##", "..###", "#.###", "T...T", "#####", "T##T#", ".....", "..##."}
-3951849850155
3
-818949783632
4
Returns: -1
{"...T...T..", "..T......T", ".###.##..#", "####.##.TT", "##.#.##T.T", "##.#####..", ".......##.", ".......##.", "....T..##T", ".###.###.#"}
0
0
6
2
Returns: 18
{"#####.####", ".T....###T", "#####.####", "##.T..T...", "####.T..T.", "##.##.##..", "##.#####..", "#.........", "#.....##..", "##.##.###."}
66505458211
9
8733409761727
5
Returns: 12133666024929
{"#...###...###.#", "T..T##.........", "T...T.....##...", "#....##..####.#", "#..T........#T#", "#..#.####T...T.", "...........#...", "#....###..###.#", "##..###..T###T#", "#.TT###...#####"}
14955
2
4
10
Returns: 14957
{"#............#.", "##.##..T.T..##.", "....#..##......", "####...##....#.", "...#.T.###.T...", "##............#", "##T#.T.####.###", "##.##.....#.###", "##.##.....#.###", "..............."}
-2463873100131
6
10742216183405
13
Returns: 13206089283540
{"##...T..T...#...###.", "##.T##.#.##.##T.###.", ".......#.##.##.####.", ".........##.#..####.", "##...#.#.........##.", "##...#.#....T..####T", "##....T..##.#..####T", "#...........#..####.", "###..###.##.#...###.", "###..###.##.#T..###T"}
-15023
9
6161
14
Returns: 21189
{"..##.T...........##T", "..##..##...###.#.##.", "..##..##...###.#.##.", ".##.................", ".###..##T.T###.#.##.", ".###..##T#####T#.###", "......##.#.....#.###", ".###..#..........##.", "..##......####.####.", "..##..##.#####T####T"}
1
9
-13113259560557
0
Returns: 13113259560567
{".....", ".###.", "T###T", "...#.", ".###.", "####.", "#.##.", ".....", ".....", "TT##.", "TT##.", "TT#..", "TT#..", "T.#.T", "T.#T."}
7
4
2
4
Returns: 5
{"T##T#", ".....", "###.#", "###.#", "##..#", "###.#", "#T#T#", ".T#.T", "#.###", ".....", "#T#T#", "#T#T#", "#T#T#", ".T#T#", "...TT"}
12
3
-7344624012695
3
Returns: 8323907214401
{"TT....###.", "#.#...####", "#T#.T#####", "...T..T...", "#.#..#####", "T.T..####.", ".T....T...", "...T.T....", "###T.T####", "#.......##", "T...T.....", "..........", "#.#T.T####", "......##..", "#T#T..####"}
1093
1
6
5
Returns: 1090
{"...#.#.#.#", "T.T#.#.#..", "..T#....T.", ".........#", "#.T..T.###", "T.T###.###", "...###.###", ".#.##.....", "...###....", ".#T###T###", ".#.#######", ".T..T.####", "T#.#T#####", "...#.###.#", ".........."}
4689169436627
4
8
7
Returns: 4689169436623
{"..T####.T##.#.#", "...####..#.....", "...#####.......", "#.T.####T...#.#", "#...####......#", "....####.......", "#.TT.........#.", "....##.........", "T......#......T", "#.T.##.....T...", ".#TT##.####..#.", ".#.............", "...###......#.#", "...###..T##.#T#", ".T..T....##.#.#"}
12
1
30877
8
Returns: 30867
{".......#.####..", "...T######.T...", "......#########", "..#######.#####", ".......##.T.T..", ".#T#.##.#T#####", ".#.#.........##", "...#..#.#.#....", "...#T.#.#T###.#", "......#...##...", "......#.......#", "....#.#..####.#", ".T....T..####..", "#.#.#.##.####.#", "T......T.####.."}
-30412910822633
0
-23680350280553
9
Returns: 7630235281025
{"...T.T....#####.#...", "#.#...T.........#..T", "T.....T..#.####.#...", "#.##.....#.####.#...", "####.#...#.####.....", ".........#.####.....", "####.##.T..#####.T#.", "###.T#.......T....##", "#.#..##.#TT#####..##", "#.#...#.#..#####..##", "#T#..T.##..#####..##", "#.#.T.......###.T.##", "#............##...##", "#.#.......#####.#.##", "#.#.#.....#####.#..."}
6
10
-20920
17
Returns: 20929
{".T.....T........#...", "#T...##..T........##", "#....##.....###.#..#", "#...........###.#..#", ".......TT...........", "#.T#.......T....##.#", "....T....T..###.....", "##.#.##.....###.##.#", "...............#....", "....................", "####.##.#T..#####.T#", "#.#..##.....#####..#", ".....##.........T..T", "............##......", "#.#..##...#.###.#..#"}
10
9
20476572802062
2
Returns: 20476572802055
{"...##", "...##", "T.T##", "T.T.#", ".TT..", "T.T..", "....#", "....#", "....#", "#...#", "#TT.#", ".....", "#...#", "T...T", "TT.##", ".....", "T.T##", ".....", "T.T##", "...TT"}
15
4
5411
1
Returns: 5399
{".####", "T...T", "...##", ".#.##", ".#..#", ".#..#", ".####", ".####", "..#..", ".####", ".....", "T...T", ".####", ".....", ".####", ".####", ".....", "....#", ".####", ".TT.."}
17678573154041
1
-12183533145221
3
Returns: 29862106299266
{"##.##TT..#", "..T......T", "##.##....#", "T..T......", "....T...T.", "..........", "....TT....", "T.....T...", "##.......#", "#####..#.#", "#####T.#T#", "#####....#", "##.##T..T#", "##.##....#", "##.##....#", "..........", "##.##....#", "##.##T..T#", "##.##.#..#", "##T##...T#"}
-10741
2
7
1
Returns: 10751
{"##T####T##", "##TT###.##", "##..###.##", "##TT##..##", ".T...T....", "..........", "###T##T...", "#.T.T.....", "###.......", "###.##.#..", "##TT#..#..", "...T...T..", "..........", "##.##T##T.", "##.##.##..", "..........", "##T##.##T#", "##.#######", "##########", "..T#####T."}
8
5
11
5
Returns: 5
{"..T.T..#.###...", "#.##T###T######", "T......T.##....", "T...T.#........", "###..##..####.#", "###..##..####.#", "###..##..####.#", "....T##...T....", "T.........T....", ".T...T.........", "#.#..##..####.#", ".T......T..##.#", "..#.####.######", "....###........", "..........#####", ".T.#####T######", "...#####.......", "...####........", "...............", "#..###......###"}
-48512
3
42844
7
Returns: 91360
{"##.T.....#.T#..", "######.###..#..", "######T###..#T.", "#...........##.", "....#..........", "#T#T###.#.#..#.", "...........TT#.", "#.#.###.#.#..#.", "#.#.###T#T##.#.", "..T.###....T...", "#T#.###.###T.#.", ".....T...T.....", "###.###T#.#T.#.", "##..###.#.#..#.", ".....##........", "...####....T..T", "##.####..T#.#.T", "##.#........#..", "##.......T..#T.", "##.###...#..#.."}
-41090589858257
14
18
10
Returns: 41090589858277
{"...#.#..#.T.....T..#", "..T..............T..", "...#.............###", "...#.........T..T###", ".#.####.............", "....##..............", ".#.####...###.#..###", "T#.####..T######.###", "##.####.TT######.###", "..........###.#..##.", "##.####...###.#.####", "....................", "...####...##........", "........#.###.......", "####.#..........####", "..##.#T#..T........#", "........#####...#...", "T..#.#.#..T......###", "...#.#.######...####", ".T.#........T...####"}
2
7
25016
7
Returns: 27516
{"###.##...T.......#T.", "###.#T..........##T.", "###.###......T.T...#", "###.T.........T###.#", "###.####.#T.....T..#", "##...........#####.#", "##..####.##.########", ".#..####...........#", ".#..####.##..#######", ".#..####.#..........", "T#.####..###T###.###", ".#.####...........##", ".#.###..T##..###.##T", ".#.###...##..###.##.", ".........##..###.#..", "T####...T......#.#..", ".#####...##.####.#..", "..........#.####.#..", "######...##.####.#..", "....##.#.#.........."}
-75872218589797
7
-31161541614335
18
Returns: 44710676975465
{".......T######.#..T.", "####.##T#####.T##.#.", "####.##.#####T.##.#T", "####T##.#####T.##.#.", ".T....#T####........", "####.##.#####.TT#.#.", "###..##.#####T..#T#.", "....T......##.T.....", "#.#T.##T#####...#.#.", "#.#.T##.#####..T#.#.", "#.#.T##.#####...#.#T", "#.T.............#T#.", "#T#..#########..#T#.", "#T#..#########..###T", "#.#.##########TT###.", "..T....T.#####......", "#T#.##########..###T", "#.#.###....T.....T..", "#.........T....T.##.", "###T###.######..#T#."}
-15721051679798
14
-13906830010385
15
Returns: 1814221669414
{"...######T.T####....", "##T#######.T####..#.", "##.########.T###T.#.", "#....###T.....##..T.", "#.....#####.T...T.#.", "##.########T.#..T..#", "###.####T...T#######", "..#.#####T....###T..", ".....T.....#.T......", ".##.###....###.T.T..", ".##.##...T.######T.#", ".##..#...T.T######.#", "......#T##..####.T..", "...T.##..##.#####..T", "##T......T...#######", "##.........T..#T####", "##T.#..#..##.##T####", ".#.##....T......###T", ".#T#..T.#..#.##.###.", "....T......####.T..."}
14
11
7
1
Returns: 13
{"##T#.#.####.##...T..", "##T###.#######T...#.", "T..#.#####..T######.", ".###T###.##.######.T", "####.###.##.T.T..###", "###T..#..T#.#..#####", "###.#.##T.#.#..###T#", "T##.#.##....#T.##...", ".##....##.T.T.#.....", ".T.##T###.......##.#", "....#.##T........#T.", ".##.####....T###T...", "T##.###..T...#######", ".##.##T#.###.####..T", "T#####T...##.....###", "######T#....T.#.###.", "##T###.#..#.###....T", "...#...T..#.###T##..", ".T......T##.#######.", "##.#.....##.##T...T."}
-16063384044341
18
-10288009629146
7
Returns: 8374292902032
{".T#####.###.#T###...", "#######.###T#T#####.", "..T..##T###.#.###.##", "T######.#####......T", ".#....T.####.....T.#", "..T.....##.##.####.T", "...T..#.##T#....##.#", "...T....T#.##......#", "..T.#T#.##.#.####...", "T...#T..##..........", "....#..###.#.##.#T.T", "#.T.#.T###.#.##.#..#", "##.T#..##T...##.####", ".......#..T..T....##", ".#####.#..T.###.T...", "######.#..TT###...##", "########..T....T..#.", ".#######....T###.T#.", ".######..T#..###.T#.", "...###.T...T.###..#."}
215764966567
2
0
11
Returns: 269706208213
{"....................", "##.###....TT......##", "....................", "##########.#########", ".#######............", "...T.....T.....#.##.", ".#############T#T###", "T#############.#T###", ".#############.#.###", ".#############.#.###", "....######.###......", "T#########.###.#T###", "T...T...............", ".#.###.T...T.......#", ".#.#######.###.#####", ".#.#######.###.#####", "...............#####", ".#T#######T###.#####", ".....#####.#...T...T", "T....#####T##......."}
-4616173844444
2
11
10
Returns: 6001025997798
{".T#####.#....#T##...", "........#....#.#....", ".#####...T...##..T..", "..........#..##.....", "###.....#.##.#......", ".T.##...####.#..T...", "###.....#.T..T#.##.#", ".####...##.#........", "..###T#.##..T##.##..", "##.####.##.........#", "##.#######....####.#", "T....#####T...####..", "##.########.#.####..", "##.####....T..####T.", "....####......#####.", "....#######.##....#.", "........###.##.####.", "..#.####.....#.####.", ".##..............##.", ".##T###.##...#.##.#T"}
18917435425415
15
-3614413639445
19
Returns: 24785033971356
{".......#####.......#", "..#.####............", "..#...#####.......#.", ".....##....T#.#...T.", ".....######....##.#.", "#.......#.T.....T...", "..##.###.#######.##.", "####..##...T.T##.##.", ".....T##.###..T#.##.", "..##..#...T.T.##....", "####.T.#T#.#.######.", "####..##...#.######.", "...#..##......T..T..", "......##..######....", ".....#.#..###.#####.", "##............######", "..###..#.........##.", "#..T....####T#######", ".#...T........###..T", "..#.#.#.####...#####"}
12
13
5
12
Returns: 17
{"######.#######...TT#", "T#####.##.T..##.....", ".T####..T..#.##.###.", "T.##T....#.#..#####.", "T.###.T..#.#..#####.", "T.###.#..#.##.####T.", "T.###.#.T####.#####.", "..#####T.....T.#....", ".....TT...........##", ".######.....T....T..", "########.###T.###T##", ".###.T.....#T.###.##", ".#T#########.T.##.#.", "...###T......###..T.", ".#.###..T..T.####.#.", ".#####.T#T##........", ".#####..#...T.###T##", ".T.###..#.#...#..T..", "######T.#.#####T####", "#####.......###.TT##"}
19
10
16
9
Returns: 4
{"##....T.....T..#####", "....................", "###.###.###..#######", "###.###.###..#######", "..#.###.##..........", "###.###.###..#######", "###.###.###TT#######", "###...............##", "###.#######..#######", "###.#######T.##T##.#", "###T#######..##T##.#", "###.#######..##.##.#", "###.#######.T##.##T#", "###.###.###.###.##.#", ".T..###.###T........", "#######.###.###T##T#", "..............#.##..", "#######.###.###.##.#", "..........#.#.......", "#######.###..#######"}
7
7
-13498014955918
3
Returns: 13498014955931
{"##...#####.######.##", "T.T..#.###.##.##....", "##...#.###.##.#....#", ".T.........##.##.T..", ".......T.....T##....", "##.#..#.......##..##", "........T###..###..T", "##.#.T##..........T.", "T####.######.....T..", ".########..#..TT....", ".########..#........", ".#.#......T#.#..#.#T", ".#..............#.#.", ".#.##.###..####.#.#.", "#..##.####T##.#.#.#T", "#..##......##.#.#.##", "#.#...............##", "#.##..#.....T....T##", "#.##.#####.##.###.##", ".....#####.######..."}
19674328265763
4
19115939968644
10
Returns: 558388297128
{"T###.##.T...........", "####......####.#.###", "####T.T##..###.#####", "####....#..###...#..", "####........#....#..", "########...###......", "####.###.#.##...T.T#", "###.....T#......#T.#", ".....##########.#.#.", "#.#.............#.##", "#....####.........##", "..#.#######.....#...", "#.####.####.###....#", "#.##....###..###...#", ".#####..............", "#...##.##....###.###", "##########.#.###.###", "###.###.##.#.#.....#", "#.....#..#######.###", "..#...T..###.T......"}
3
15
11
1
Returns: 18
{"#...#T.###T#.#..####", "#...#.T###.#....T.##", "#..T##....T#....####", ".T..##.#.....##T.#..", "#.####.###.#T....T.#", "#T####.###.#.##.T...", "T......#....###.T#.#", ".#...T.#####.....T.#", ".#.##T##########T..#", ".#.##.##.....###T.T#", "##.##.#T##.T.......#", "##......T....T..#..#", ".####.T.....###.#.T.", "...T....###.T##.#...", ".####.T###...##.##T.", "T###.....##.T#..###.", ".#..#T..T.#..#..###.", ".#..T....T.#.#..###.", "##...T...#T#.#..###.", "#T..#.##.#.#.#....T."}
14012146243723
11
659531468207
14
Returns: 14687876253071
{"T.T.......#####..##.", "#.########.####TT##.", "T.########..T.......", "#T########T####..###", "##########.####..#.#", "##########T####T.#.#", ".#####.###.####..#.#", "...T.......####..T..", "........##.####.....", ".##.##.###.#######.#", ".........#.#######..", "..#.##.###.#######..", ".T......##.#######.T", "..#.##.###..........", "..#.##.#########.#..", ".................##.", "..#.##.########..##.", "#............##..##.", "#.#..............##.", "#.#.##.########..##."}
-19357240715711
0
-380451387232
2
Returns: 22772147194178
{"##...#..#T##......#T", "##.T.#..##....T.####", "....T...##.T....###.", "........##.########.", ".#.###..##..........", ".#.###.#.##.######..", "............######..", ".......#.##.........", "##...#.......#######", ".......#.##..#######", ".#...###.##......###", ".#........##.####.##", ".....###.###.####.#.", ".##..#.#.....###....", "###..#.#.##.......#.", "##.....#.#####....#.", "###T##.#T.#####...#.", "###..#....#####...#.", "##......#.#####.#.#.", "..........#####.#.#."}
-8905978007257
1
5529642087314
14
Returns: 15879182104034
{".##..T.T........#.##", ".#...#.....##..##.##", ".....####..##..##...", ".....####..##.####..", ".####.#.##.##.###...", ".####.#.##.##.......", "#####...##.#########", "####....##.......###", "#...........########", "#.T............T.###", "#.......#.T.####T..#", "#..###.##...T..T..##", "...###.##.....###.##", "...T...##.#T#.###.##", "..####.####.#.###..#", "..#.##......#.###..#", "....#####.....###...", "........##.##....#.#", ".##.######...#..#..#", ".##..###........#..."}
-14174579713480
6
2
3
Returns: 15592037684838
{"...#..T..####.####T.", "...T....##..T..#####", "..##.#.###..........", "..#.##.###.....##..#", ".##.##.......#.##..#", ".##......T..T#..#..#", "........##......#...", ".##.#....T.T##..#..#", ".##.#.#..#####..#..#", "......#..#####..###.", ".#......#######.####", "###T#######T......##", "....###..T...####.T.", "#.#.##.####.#####.##", "..#.#..#.##.#####.##", "...##..#T##T#####.#.", "...#.....##.###.....", "...#.T...#####T...#.", "..##.....####.#####.", ".T##....T####.#####."}
7073050128727
6
16
17
Returns: 9194965167326
{"#########.#..####.#.", "#########.#..####.#.", "#####...........#.#.", "#########.#T.####T#.", "......T............T", "............#####.#.", "#########.#T#####.#T", "#######.............", "#########.#.#####.#.", "#########.#.#####T#T", ".......##.#..##.....", ".....##.............", "...........#.####...", "....................", "......###.##........", "#########.##.######.", "#########.##.######.", "#########.##.######.", "#########T##.####T#.", "#########.##.####.#."}
14450120243754
12
-15976097284596
6
Returns: 30426217528353
{".######...###.##.##.", "....##.#......##.#..", "##..##.#..#.......#.", ".#.....#.####.##.#.#", ".#..##.#.###........", "........########.#..", "..T.##.#########T#.#", "#...##.#####.....#.#", "....##.##.....####.#", "..####.###.##.#....#", ".......###.##.####.#", "......#.............", "T.##.....#T######..#", "..###.T.##.####...T.", "..###...#...........", "........##.##.###...", "..###..............#", "...####.##.##.##....", "....###.#........##.", "T#....#.#.....##.##T"}
-16479796358068
8
-14743200607519
8
Returns: 2083914900663
{"....##.#............", "#.......#.##..#####.", ".####.#T.....T######", "..###.###.....####..", ".########.....####..", "...###.##...#.......", "##.##.T##T.######..#", "...##...........#...", ".#.##..#....#......#", ".#.#...###...####.##", ".#.....###.#####..##", ".......##...####....", ".#.#######.##.......", "##.......##.####.#.#", ".#.####...TT##.#.#..", "##.T.##.###.#.T..###", "##.##.####..##.#####", "##..#.####T.##T#####", "##T.#.####.#.#.T###.", "##T....##..#....###T"}
8
6
18188407206027
2
Returns: 25463770088438
{"##...TT.####.###...#", ".....##.########....", "###...T.######...T.#", "####.......#####.#.#", "##....###########..#", "##.#.######.#......#", ".#....T####.##....T.", ".#.####...#.........", "....##..#...##..T.T.", "#.T.....###T##..####", ".####...............", "........#.#.##..#...", "##.##..T#.#.##.T.###", "........#.#####..##.", "......#.#.#####..##.", "#..##.#.#.#####..###", "#..##........###.#.#", "#.#####.####.###.#.#", "..#####.####.#..T..T", "#.##.##.####.###...#"}
-16312092135930
18
-12941460116547
1
Returns: 4213290024238
{"..........######.##.", "...###.#########.#..", "...###.#########.#..", "...##...............", "...###.#########....", ".T.#############T...", "......######........", "...#############....", "#..............#....", "################....", "################.TT.", "####................", "....................", "######.#########.#..", "######T#########.#T.", "#.####.#########T#.T", "#.####.#########.###", ".......#########....", "...###.#############", "..T..T.######......."}
-15115439984437
15
3
0
Returns: 20405843978995
{".#.....#T###..#T....", ".....###.###........", ".##.......#.........", "..#..##...##..###...", "....................", "#.....#...#####.###.", ".##...##.####.......", ".##.........###.###.", ".#......##.####..##.", ".T...##T##.####..#..", ".....##.##..........", "##......###....#.###", "..............#..##.", "###.##..###.#.#..###", "###.##..........####", "....##.####..##.##..", "###.##.##....##.####", ".##.##.#####.##.#.##", ".##.####.###.##.....", ".##..###.###..###.##"}
19206250751413
11
-8850996261772
15
Returns: 28057247013203
{"##..##.##.....#.#.##", "...######..##.###...", "T#..###...T##.###.##", ".#..###.#.###.###.##", "........#.#.#.####..", "##.#....#.#......###", "#.##....#.#...#....#", "#.............##.#.#", "#.##.#.##.##..##.#.#", ".......#####..##.#.#", "#.######.###.T#...T#", ".#######..#...###..#", ".#######.......##.##", "..##...#..T..T..#.##", ".....###..###.......", "..####..T..T....#...", ".......#...#...##...", ".##.##.##T##....#.#T", ".##....##....##.####", "T..T...##..#.##.#..."}
10
12
5
12
Returns: 5
{"...#..#........##.#.", "T##......T####.#####", ".###.T##T#####.#####", "..##.......#.#.#####", "#.##..##.###.#.#####", "..###.##.....#.#....", "..#........#.####.#.", "#.......#.........#.", "#.######.....T..T.#.", "#.#####T#.####.##T#.", "#######...##.#.####.", "...####......#.#....", "#............#.....#", "#......##......#####", "#........#.........#", "......#.##.##.#####.", "##.####.#..#...#####", ".#......#.....######", ".######....######.##", ".#........####......"}
5
17
-1284658936027
2
Returns: 1541590723255
{"########..#####.#...", "########..#####.#.TT", "########..#####.#..#", "#.######..#####.#..#", ".............##.#..#", "#............##.#..#", "....####..###.......", ".........######.#...", "#.#############.#..#", "#.#############.#.##", "....................", "#.#############.###.", "#.#######.#########.", ".....####.####......", "........#.######....", "########..#########.", "....................", "########..#######...", "########..#####.#...", "..........#####.#..."}
18644386181893
1
12435114645201
9
Returns: 7451125844062
{"..T..####.#.####T#..", "###.....#.#.####.#.#", "####..........##.#.#", ".###.####...........", "####.##.##........##", "......#..#....##.##.", "###............#.###", "......#........#.###", "####.......#.#.#..#.", ".....T....#.T..#..#.", "...#....####...#....", "........#......#..#.", "#..#.#..####..##..#.", "#..#....###.......#.", "##..#.....##..##.##.", "###.#...#.###.##.###", ".##.#.......###.....", "....#.#.#.....##.#..", "#####.....##########", "####.####.######.###"}
-11907433497437
17
11
10
Returns: 15479663546689
{"...##########.##....", "...#...#####....##..", "#..###...###.#######", "......######.#####.#", "#.###########.####.#", "##########.....###.#", "#..##.......#..###.#", "....#.#.###....#....", "T.........#T.###....", "#............###..##", "......#.#.#...##..#.", "..#.##.......####.#.", "#######.#.######...#", "........#...........", "...##.#..........#..", "......##.......#....", ".......#.#..#..#..##", "..#.#.##.#..#..#..##", "..#.######..#.##..##", "....#########.##..#."}
2
8
17
3
Returns: -1
{"##.T#T#####..####.#.", "#..#.........####T#T", "#..##.####.#.#..#.#.", "#..##.####.#.#..###.", "#.T##.T....###..####", "......####.###..##..", "###....#######..###.", "..T...#.T#####...#..", "####.##..#####......", ".###.....######.....", "..##.##.########..#.", "####.#.....####....#", "...................#", "#####.........#.....", "###.....##........#.", "###.#.####.##.##.##.", "....#.####.#........", "###.#.####.##.....#.", "###.#.##.......#.##.", ".......####...#####."}
12
17
18277017598007
4
Returns: 20104719357806
{"#.#T..T...", "...T#..T.."}
4047
6
-1
9
Returns: 4051
{"T#T#.#.#.#.#.#.#.#.#", "#..#.#.#.#.#.#.#.#.#", "..#..#.#.#.#.#.#.#.#", ".#..#..#.#.#.#.#.#.#", ".#.#..#..#.#.#.#.#.#", ".#.#.#..#..#.#.#.#.#", ".#.#.#.#..#..#.#.#.#", ".#.#.#.#.#..#..#.#.#", ".#.#.#.#.#.#..#..#.#", ".#.#.#.#.#.#.#..#..#", ".#.#.#.#.#.#.#.#..#.", ".#.#.#.#.#.#.#.#.#..", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#" }
19
0
19
18
Returns: 363
{"T#T#.#.#.#.#.#.#.#.#", ".###.#.#.#.#.#.#.#.#", ".#T#T#.#.#.#.#.#.#.#", ".#.###.#.#.#.#.#.#.#", ".#.#T#T#.#.#.#.#.#.#", ".#.#.###.#.#.#.#.#.#", ".#.#.#T#T#.#.#.#.#.#", ".#.#.#.###.#.#.#.#.#", ".#.#.#.#T#T#.#.#.#.#", ".#.#.#.#.###.#.#.#.#", ".#.#.#.#.#T#T#.#.#.#", ".#.#.#.#.#.###.#.#.#", ".#.#.#.#.#.#T#T#.#.#", ".#.#.#.#.#.#.###.#.#", ".#.#.#.#.#.#.#T#T#.#", ".#.#.#.#.#.#.#.###.#", ".#.#.#.#.#.#.#.#T#T#", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#.#.#", "##.#.#.#.#.#.#.#.#.#" }
17
0
20000000000018
18
Returns: 20000000000332
{".#.", "##.", "..." }
0
0
2
2
Returns: 6
{".#.#.#.#.#.#.#.#.#..", ".#.#.#.#.#.#.#.#.#.#", ".#.#.#.#.#.#.#.#...#", ".#.#.#.#.#.#.#.###.#", ".#.#.#.#.#.#.#...#.#", ".#.#.#.#.#.#.###.#.#", ".#.#.#.#.#.#...#.#.#", ".#.#.#.#.#.###.#.#.#", ".#.#.#.#.#...#.#.#.#", ".#.#.#.#.###.#.#.#.#", ".#.#.#.#...#.#.#.#.#", ".#.#.#.###.#.#.#.#.#", ".#.#.#...#.#.#.#.#.#", ".#.#.###.#.#.#.#.#.#", ".#.#...#.#.#.#.#.#.#", ".#.###.#.#.#.#.#.#.#", ".#...#.#.#.#.#.#.#.#", ".###.#.#.#.#.#.#.#.#", "...#.#.#.#.#.#.#.#.#", "##.#.#.#.#.#.#.#.#.#" }
0
0
0
2
Returns: 358