Problem Statement
Usually all cars drive to the nearest available parking spot, but that might turn out badly for some cars. Consider for example the following car park
.C.....P.X... XX.......X..P XX.....C.....(here 'C' stands for car, 'P' for parking spot, 'X' for wall and '.' for empty spot)
If the car on the bottom drives to its nearest parking spot, the upper left car must drive all the way to the right, taking 13 units of time. If, however, the car on the bottom drives to the parking spot on the right, it will take 6 units of time for both cars to find a parking spot.
Return the minimal amount of time it takes before every car can have a parking spot (assuming that the cars act socially like above). All cars start on an empty spot. Cars are small and any number of them can drive on the same square simultaneously. They can drive over empty spots and parking spots, but not through walls. Each car has to end on a separate parking spot.
If it is impossible for each car to drive to a parking place, return -1.
Definition
- Class:
- Parking
- Method:
- minTime
- Parameters:
- String[]
- Returns:
- int
- Method signature:
- int minTime(String[] park)
- (be sure your method is public)
Constraints
- park will contain between 1 and 50 elements, inclusive.
- All elements of park have equal length.
- Each element of park has length between 1 and 50, inclusive.
- Each character in park is either 'C', 'P', 'X' or '.'.
- There will be no more than 100 cars and 100 parking places in park.
Examples
{"C.....P", "C.....P", "C.....P"}
Returns: 6
Every car just drives to the opposite parking spot.
{"C.X.....", "..X..X..", "..X..X..", ".....X.P"}
Returns: 16
The slalom takes the car 16 units of time.
{"XXXXXXXXXXX", "X......XPPX", "XC...P.XPPX", "X......X..X", "X....C....X", "XXXXXXXXXXX"}
Returns: 5
This would take 11 instead of 5 units of time if the car on the bottom drove to its nearest parking spot.
{".C.", "...", "C.C", "X.X", "PPP"}
Returns: 4
While driving, the cars can be on the same empty spot or parking spot, but they have to finish on different parking spots.
{"CCCCC", ".....", "PXPXP"}
Returns: -1
There are not enough parking spots for all the cars.
{"..X..", "C.X.P", "..X.."}
Returns: -1
The car can't reach the parking spot.
{"P.................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.","..................................................",".XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","..................................................","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXC"}
Returns: 1274
{"PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC"}
Returns: 80
{"PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC","PPPPPPPPPPCCCCCCCCCC"}
Returns: 10
{"CPCPCPCPCPCPCPCPCPCP","PCPCPCPCPCPCPCPCPCPC","CPCPCPCPCPCPCPCPCPCP","PCPCPCPCPCPCPCPCPCPC","CPCPCPCPCPCPCPCPCPCP","PCPCPCPCPCPCPCPCPCPC","CPCPCPCPCPCPCPCPCPCP","PCPCPCPCPCPCPCPCPCPC","CPCPCPCPCPCPCPCPCPCP","PCPCPCPCPCPCPCPCPCPC"}
Returns: 1
{".PPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","PPPPPPPPPP........................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC","........................................CCCCCCCCCC"}
Returns: -1
{"CX...X...X...X...X...X...X...X...X...X...X...XPPP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CXCX.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.X.XPXP","CCCX...X...X...X...X...X...X...X...X...X...X...XP"}
Returns: 1174
{"CCCCCXCCCPPPX","PPPPPXPPPCCCX","XXXXXXXXXXXXX","CCCCCPPPPPCCP"}
Returns: -1
{"PPPPP.....CCCCC"}
Returns: 10
{"C","P"}
Returns: 1
{"PC"}
Returns: 1
{"CX","XP"}
Returns: -1
{"P....CP....C"}
Returns: 5
{"PXC..............................................P"}
Returns: 47
{"..C....X......X.....X..XXX.....C...XX.............","XXC.XX..XX.X.....XX.......P.C........XX..XX.X..P..",".X.X.P...X.P.X.X.X......X........XX......C........","..XX.X.....P.X..X..................C..X...........",".X..P......P......PC...P..X.X......XP...X......P..","P.C.P.......X..XP..XX..X.............X...X.X..X..X","....PP...X...X..C..C....X..PX....X........P.......","........X...X...........X..X..X........X.X.....C.X","...X...........X....X..X...X......P...XX..........","..X......X..........C.P.....X.XX...X.....XP..P....","X..XXC....C....X...XX.P....X.C.......C.CX...X..X.C","..............X..XC.X..X..XX..P.....P..C.....X....","..X.......X.X.....XP.C...............P.........XX.","X....P.X.P...X....X........P.C.X..C.C...X..P..PPX.","...X..X.X............X..X..............XPP....X...","......X....X......C.X.CX..X...CX...XX....C.X....X.","..........X....X.........PX......X..C....X...X..P.","..XX...X.CCP.X...........XC.P.XXP..XP.P....XXX...C","...CXP...X.....XX..CX.X....C...........X..C.....P.",".P.X....P....X......X..XP..........X........P.X...","X.X.X..XX..X..........X..C...C..C.....P.X.........","..P..X...X....P...X.X......P.....P...C...XX....X..",".X.XP...X.....X...XXX..X.X...X.XX.......X...X...X.",".......X.....XXX.CX......P...X.X...X.....PX..C....","...X.................XC....PX..CX.........X...C..X","X......XXX..C......X....X....X.CXC.X.CX.......P...",".X..........X..XCX..X..XXX....P...XX.XCXC.........","X...........P..P..X.X.......XXXX.........P...X....",".......XX...P.X.C.....X...X........X.....XX.......","..X.C..P...C..........XX..X.P............X..X.....",".....X.....C........X..X..........X....X.X.XX....X",".XX...XXCX.....X................X...XP.......XX.P.","...X..................X...X.......XP.....CX.C.C...",".......C.X......P.X....X..X.XX....XC...XX.........","..X.....C...P.X.X..X.....C.....C...X..C....XP.X.X.","....C.....X..........X....X.X..X......XCX........X","..P..C.X..X.X....X.X....X....X.P..........XX.XX...",".X....X.......X..P.....XCX....C.X....X.X...X...X.X",".X....XX...X.XX..X........P...XC.P..X.X.....X...X.","..X.XX.....X................X.....X..........P....","......XX.......X...X..P....P...PX..C.X....X.......",".....X............C.XXXPCP..X...X......X.X......P.","..............X.P..X....P.C.P.....P.........P.....","..XX....XPX...X.........PX..CCX.....XX..X.XXX.....",".....PXC.X.................C....X.X........X.C....","..........X..............P....X..X..X......XXC....","........X...X.X.X....X.X...X.P.X........C.....P.C.",".........XX....P......CCX..C.X....XXX...PX.....C..","XX.X..C.X...PXX...X...X.XC..X....X.C.C.XC.......X.","C.C.X...PC....X..X..P......................X..X..."}
Returns: 12
{"XX.XX.X.X.XX.XX.XXXXC...X.XX.XXXX...XX.XX.XXP...XX",".XXXX..X....XP.X.CX.PXX.C....XXXX.XXX.X.XX.XX.XXXC","PXX..XC.X.XC.X.XX..XX.XX..XX..XCX.......XC...X.X..","XPXXX.......X..P.X.XX.P.X.X.X.CX.X....XX.....X.X..","X..X..X..XX..X.XC.CX.X.XXXX..X.CX.XXX.XX.X.PXX.PP.",".P.C.X..X.P..XX....PX....PXC..XXX......X..X.XX.X..","....XXXXXCC..XX..X..X.P.X..XX....X...X.X...XXXX.X.","XXXX.PP.XPX.XCX..XX.X.P.X.XXX.....XXX.X..P.XXXX.XX","X..X.X.XXXX...PXX.PX.PX..XXX.C.XXX.X..XXXXXX.C..XX",".CX.X.P.XXXX....X..XP.XX.CXC.X...X.X..X..XX.X....X","C.PX.X...XX.XCX..X..X.X.XXXX...X..X.XXX.X.XX..XX.X",".X..X....X...X.XX....XX.P.X.XPX..X.X......XX.....X","...XXX...X.PXXXXX..XX.PPP.X.XX.X.X...XXX.XXX.X..X.","C.X..XX....XP.P.XC..X.X....P..X..X...XXXXXX.X.XXXX","...PX..XXXXX..X..X.X..X.XP.XXX..CXP.XX.X....X.X...","CX.XX.XP.CX..XXXP.X.XX.XXXPX.X.X..XCX..XX...XX..XX","XXXX.X...X...X.....XX.X.XX...X.X.C.X..XX..X.XPCXX.","P..XXXX..XX.C..X.X...XX.X.X.P.P.XC.XXX.XC..PX..X.X","XXX..X.XXX....XX...CXX....X...X.XXX...XPX...X.C.X.",".X.XX.X..X.....X..X..XX.X.....X.XX.X.X..X.XXX..X..","XXX.....X...X..XXPXX..XX.....PXXXXX.........XX.CX.",".......X......X.CX...XX.XX..XXXX..X..CXXXX.P..X..C","XX..XX.XX..X..XX.XX..X..XX...PP..X.X.X..XXP..XXCX.",".XX.XXX..X.XXX..XXX..X.X..X.XX.X..X...XXX.PXXX.X.X",".XXXC..X......XX.X...XXXX.P.XX...XX..XXX.XX..X.X.X","..X...C..XXX.....XX....XX....XXXXX.X..PXC.X.X.XX..","....X..XX.PCX...PXXC.X..X..X.X.X..X.X.XX..X.X.XX..",".CXX...XX...X..XP.X..XX..XX...XXC...XX.X.X.X...X..","C..XX....X..X..PX.XXX.X..C.XXC.X.XX.XXX..X..XPX.XX","XXX...X...X.XXC.X.....X....XX.X..X..XPX.XXX.....X.","XX..XXX.X..X.CX..X..XXPXXX......XX.XPP...XX..C...X","..XX.X..X.XXXX.X.....XX.XXX....XXXXXXCX.X.X....X..","XXX.X.XXXXP.C..PXX..XXXXXPXXXXCXXXCX.X..XXX..P..P.","X.XXXC..P.XX..XX..XXXX..XXX..C..X..P.XX..XX....PXX","XP.X.X..XXCX..X.X.X.......XXXX.X...X.X.XXXXX...X.X","...XX...PX....XX..X.X..XX....CXXX..XXX.X....XXX.X.",".X....X...X.X.XC.X..XC....XPXX.P.X.XX.XX......XXX.","XPX..X..XX..C..XXXX...CXP.X..XX.XXX..C..X.X.X.....","X..XXXXX..X.X..XXCX.XX.XXX.XX..XP.X....XCXX.X.P.X.","..X...XXXC.X.....PX.X.XXP..XX.X.XP..X.XXX..XXXXX..","X.C.X.CX....C.X..PX...X..XX.PXP..XXC..X......P.XXP",".X.XX.XX.X.XPXX......XX.X.C....CXX..X..X...X..XXX.","XXXXX.XX.X.X...PXXX.....X...XX.X...C...P..XXX.X..X",".XXX.X.......X..XXX..X.XXXXX.X..XXX.X.CCXXX......X",".P....X.X..X.XXX.X.X...X.CXX.....X...XPX....X.X..X",".XXC.X.XXXP.XC.P.X.X....X...CXX.X..XX.........X...","XXXX.X..X.XXCCX....X.X..XXXX..XX..XXC...XXC..XX...",".XXX.X.X..XX....XXX.X.X....X...X.XXX..X.XXXXXX..X.","XXX.PXX..C...X...XX.X...XX.XX..X.X.PX.........C...","..X...X..X...X..X....XCX.XP..X.X......X.XC.....X.X"}
Returns: -1
{"P.....P...X.XX.X.X..X...XXXX.....X..P......X.P....","...XX..P..X...X.X..X..X..X..XX.X.XX....XXX....X...","X.X..XX..XX..XP.......X....X.X.....PX...........XX","..XXX..X...X.......X....X..X.X..X.XX.X.XX..P.XX...",".XX.X.PXP......XX.XXXX......XX.....XXXXXX..X..X...",".XX.......X...X..XXXX.X.XX..........X...XX......X.",".PX......XXX.XX.XPX..X....XX.X.X...XXP..XX...XX...","..X..........X..X...X.X.X.X....X.XP....X..PX......",".X...X.X.........X..........X.XXXXXX.X....X...XXXX",".X.P..........XX......X.P..P.X.....X..XPX.P..P..XX","....X......X.XX.XXX.X..PX.XX......X......C.X....XX",".......X...XX.XPX.X.XX.XC.XX..X...X..X....PXXX....",".XX..X..X.....X....X...........X.X..XX...X...X....","X......C...X.X..X....XX.X..........P......X...XP..",".X.XXXP.XX.X.X..XX.PPX....X.....X..XX......XXCXXX.","X.XX..........XXXX.......X....X.....P.X.X...X.XP.P",".XX.X.....X.PXX.XC.X.XXP.....PX.P.........X..X...X","X........PXX......X......XXPX..P...X..X....X..XP..","...X.PX....XX...XX....X.X.P......XX.X.X...X...X...","....X.XX......PX.X.PX..X..XXX.C..X.XPX.X.X....P.XX",".XXP.XXX.XX.XX...XX.XX.X..XX...X.X.....PX...X..X..",".X.....X.XXP...X.....X...XXXXX.X.X........X..X.X.X","X..X...X..XX..P.X.XXX..XXXPX.X...XX...X.X.......X.",".XXXXXXXX..X....X.X.X.X..........XP.....X.......X.",".....X.XXXXX..........XP...X....PXX.X...........XX",".XXX....X......X.....X.XX..X......XXX......XXX..XX","......X....XX...X.XXX...X..X.P...X.XX...XX.X.X..XX","X..P..XX.XP.....X.XXXX.X......X...P..X.PXX.XX.....",".XX...X..X...X......P...X...PXPX.XX....X......X...","X......X.XX..XXX.X.......XX..X....X.X.X.X.P..XXX.X","....X.X.X.XX...X.X.XXPX.XX.P.X..X.X.XX.XXX...X....",".XX.X..X....X....X..XX.XX..P.XX.....XX..XP.X.XXXXX",".....XXXX..P.XP...X...X...X.XPX.XX........X....XXX","..X.....XX...X.........X.X.X.....X.X.XX.XXX.......","X...X......P..P.P..X....P...XX..X.......X.....X.X.","XX.X....X.X.X.PXX.X..X..XX........X.......XXXX...X",".X.X..X..X.X.....X.........X..P.X.....X..XX.X.....",".XX.........X.XX....XX.....XX..XX.XXXXXXXX....XP.X","X.P...X..XX.XP...X..P.X.X....XP....PXX...X.X...X..","......XX.XXX...X.....XX.X....XX..P...C.XX.X...X.X.","..X.....X......X.XC..XXXX......X....X.X......X.XCX","..XXX..X....X....X..XXXX.X.P...XP.X.X.X.X....X....","X.....X.X....X..........X..X.XPXXXX.X..X..XX.X.X.X",".....X..XX..X..XX....X...XX.X.....X.X..XXX.......X","XXX...XXXX.....X.......XX.X.X.X.X......X.XXXXP....","..XX..XX.XX..........C...XXPP..XX...X..........XXX","XP........X..X..X......X.P....XXX.X..P............","XXX..X.XXX.X...X.X..X...X...X.P...PX..XXXX..X.....","XX.X.....X..X.XX..X.X..XPXXX...X.P.X.X.X..X.....XX",".P.........PX........P..X..X.X.X..XX..XX...X..X..."}
Returns: 7
{"."}
Returns: 0
{"P"}
Returns: 0
{"C"}
Returns: -1
{"X"}
Returns: 0
{"..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................",".................................................."}
Returns: 0
{"..................................................","..................................................","..........P.......................................",".......P..........................................",".............P....................................","....................P.............................","..................................................",".................................P................","..................P.......P.......................","......P...........................................",".............................P....................","..............P...................................","..................................................",".........................P........................","..................................................","..................................................",".....................P............................","..................................................","..................................................","...................P..............................","..................................................","..................................................","..................................................","..................................................","..................P...............................","...............................P..................","..................................................","...........P......................................","...................P..............................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","................P......P..........................","..................P...............................","..................................................","..................................................","..................................................","..................................................","..................................P...............","......................P...........................","..................................................","..................................................","..............P...................................","..................................................","..................................................",".................................................."}
Returns: 0
{"..................................................","..................................................","..........C.......................................",".......C..........................................",".............C....................................","....................C.............................","..................................................",".................................C................","..................C.......C.......................","......C...........................................",".............................C....................","..............C...................................","..................................................",".........................C........................","..................................................","..................................................",".....................C............................","..................................................","..................................................","...................C..............................","..................................................","..................................................","..................................................","..................................................","..................C...............................","...............................C..................","..................................................","...........C......................................","...................C..............................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","..................................................","................C......C..........................","..................C...............................","..................................................","..................................................","..................................................","..................................................","..................................C...............","......................C...........................","..................................................","..................................................","..............C...................................","..................................................","..................................................",".................................................."}
Returns: -1
{".C.", "...", "C.C", "X.X", "PPP" }
Returns: 4
{"." }
Returns: 0
{"..." }
Returns: 0
{"C....X....P..X.....X..........X......XP..C......XP", "X..X...................X...X......X....PXX........", "C..C.......XX...X......X.P....X...PP.X.....X.....X", "......X...XC..X...CPX.X.P.X..X..XCX..........X...P", "...X.X....PX..........X.......C.......X...X..X....", ".X...X.........X.C.....PC........XP.....X..X.C....", ".CX........P.X..X.X...........C........XC..X......", ".......X........X..X.P..X.P......X...C...C........", "X.X.......XXX.....PX........X..........X.P......X.", ".......PC....X.XP........X..X...X..........X....X.", ".......X.C.......P...X....X.X...................X.", "....X.....X...X......X...X.X...X..XXC.P..C.....X..", ".....C.CP.....C..............X....X.P.X......X..X.", ".....PP.X.....P...C.....XX.X.........X...XX.......", "XP.P.....XX.............X......X..........X.X...C.", ".......X.......X...X.........X.X.X..XXP.X.........", "..X..................P....C...C....C.X...........P", ".......P....XX.X............X...X........X....X.XC", "..XP....X.X...X.X.P.X....XXX....C.P...P...P..C....", "..X.P.P....XCX..........CX...X.X...X......P.......", "C............X.X....X.......XC....................", "...X.X..P...XXX.CXXXX..............X..CP.....C...P", "XP..XP...X..........X.P..........C..X.X.......C...", ".........X...XC.P...X.X....X.X.X...XCPX..CX...X...", ".X......P...........CXC.....X........C...X......X.", ".....P..X..XPX.......XX....X...X.P..X.XX...X......", ".....XXX....X...X....X.C...X.P....X.........X.....", "X.....C.X.....P..P...X.CXX......X.X.C.............", "X.......CX...........X............X........P..P...", ".X.........P..XX.....X.C....C...........XC....P...", "...............X....XX....X.....XXXXXXXX.X....P...", "X.C.....C...X.X....X.X.....C...XX.P.........P...P.", "...XXX.......X.......XXXXXXXXXXXP..PX........P....", "....X..........C.X..X.............................", "C...C.X........X........X.........X.............XP", "PP.P..X..XX..X............X......X....X.XX..C.....", ".....P.......P................X..X....X.CX........", ".....P...CXX.......X.X.......P....X.X.C........X..", "......C......X.........X..P..P..P.........P.......", "..P.....C..............P................X...X...P.", "XX.....P.....X..........X....C......X.X...CXXX....", "....C......CP....C......CX..........C...X.........", ".....X...X..X...................C..X...P..X...XX..", "...X....XX..............X.........X..X.....P.P..C.", ".....X..XP......P......................C..........", "..X.....XCP.X...........XX.....X...P.....CC......P", "..X..C...........X...CPX....X...P.......X.........", "..X.........C...P.........C...........XX....C.....", "P.XP.............X..X.X.X......P.C.....X.......X.P", "..X...X........................X.....P.....X..X..." }
Returns: 15
{"....................................C...", "...........C............P.......P.......", "....C..........P....C......C........P...", ".........X.....................XX.......", "...C........P....X.....P........X.......", ".........X.......X......C...............", "........X...C....X..C.........X.....C...", "..P.........................X....X....P.", "..................X.......X......X......", "C.....X..P...P..X......C.....P..........", "..P...X.......X..........X.........X....", "............X............X.....X.X....P.", "......X...........C......X..C...........", "........X..X.....P................P.....", "......P...XX............X.....P.X.......", "...C..................X.......P.X....C..", ".....P..C...XX......X....C......X.......", "............X..X..X.............X.......", "......X...X..............C....X.........", "....X...X.........X.........X.......P...", "...X............X....X..................", "..X......XX.X.X........X..X......C......", "......C.........P........X.............C", "...................P........P..........." }
Returns: 10
{"....P.." }
Returns: 0
{".C.", "...", "C.C", "X.X", "PPP" }
Returns: 4
{"." }
Returns: 0
{"..." }
Returns: 0
{"C....X....P..X.....X..........X......XP..C......XP", "X..X...................X...X......X....PXX........", "C..C.......XX...X......X.P....X...PP.X.....X.....X", "......X...XC..X...CPX.X.P.X..X..XCX..........X...P", "...X.X....PX..........X.......C.......X...X..X....", ".X...X.........X.C.....PC........XP.....X..X.C....", ".CX........P.X..X.X...........C........XC..X......", ".......X........X..X.P..X.P......X...C...C........", "X.X.......XXX.....PX........X..........X.P......X.", ".......PC....X.XP........X..X...X..........X....X.", ".......X.C.......P...X....X.X...................X.", "....X.....X...X......X...X.X...X..XXC.P..C.....X..", ".....C.CP.....C..............X....X.P.X......X..X.", ".....PP.X.....P...C.....XX.X.........X...XX.......", "XP.P.....XX.............X......X..........X.X...C.", ".......X.......X...X.........X.X.X..XXP.X.........", "..X..................P....C...C....C.X...........P", ".......P....XX.X............X...X........X....X.XC", "..XP....X.X...X.X.P.X....XXX....C.P...P...P..C....", "..X.P.P....XCX..........CX...X.X...X......P.......", "C............X.X....X.......XC....................", "...X.X..P...XXX.CXXXX..............X..CP.....C...P", "XP..XP...X..........X.P..........C..X.X.......C...", ".........X...XC.P...X.X....X.X.X...XCPX..CX...X...", ".X......P...........CXC.....X........C...X......X.", ".....P..X..XPX.......XX....X...X.P..X.XX...X......", ".....XXX....X...X....X.C...X.P....X.........X.....", "X.....C.X.....P..P...X.CXX......X.X.C.............", "X.......CX...........X............X........P..P...", ".X.........P..XX.....X.C....C...........XC....P...", "...............X....XX....X.....XXXXXXXX.X....P...", "X.C.....C...X.X....X.X.....C...XX.P.........P...P.", "...XXX.......X.......XXXXXXXXXXXP..PX........P....", "....X..........C.X..X.............................", "C...C.X........X........X.........X.............XP", "PP.P..X..XX..X............X......X....X.XX..C.....", ".....P.......P................X..X....X.CX........", ".....P...CXX.......X.X.......P....X.X.C........X..", "......C......X.........X..P..P..P.........P.......", "..P.....C..............P................X...X...P.", "XX.....P.....X..........X....C......X.X...CXXX....", "....C......CP....C......CX..........C...X.........", ".....X...X..X...................C..X...P..X...XX..", "...X....XX..............X.........X..X.....P.P..C.", ".....X..XP......P......................C..........", "..X.....XCP.X...........XX.....X...P.....CC......P", "..X..C...........X...CPX....X...P.......X.........", "..X.........C...P.........C...........XX....C.....", "P.XP.............X..X.X.X......P.C.....X.......X.P", "..X...X........................X.....P.....X..X..." }
Returns: 15
{"....................................C...", "...........C............P.......P.......", "....C..........P....C......C........P...", ".........X.....................XX.......", "...C........P....X.....P........X.......", ".........X.......X......C...............", "........X...C....X..C.........X.....C...", "..P.........................X....X....P.", "..................X.......X......X......", "C.....X..P...P..X......C.....P..........", "..P...X.......X..........X.........X....", "............X............X.....X.X....P.", "......X...........C......X..C...........", "........X..X.....P................P.....", "......P...XX............X.....P.X.......", "...C..................X.......P.X....C..", ".....P..C...XX......X....C......X.......", "............X..X..X.............X.......", "......X...X..............C....X.........", "....X...X.........X.........X.......P...", "...X............X....X..................", "..X......XX.X.X........X..X......C......", "......C.........P........X.............C", "...................P........P..........." }
Returns: 10
{"....P.." }
Returns: 0