I tested only data sets with string lengths 60 or fewer. Except for the
two "nochecks" versions described below, all programs pass "verifyprogram" or,
in the case of Kotlin, pass my own scripted test:

---------
   AC submission Pearls_JPB.java (Java) OK: AC [CPU: 30.23s @ test case secret/024-60-50-50-slow-imp]
   AC submission Pearls_JPB_NoChecks.java (Java) OK: AC [CPU: 51.34s @ test case secret/026-60-50-50-WWWimp]
   AC submission RSRPearls.cpp (C++) OK: AC [CPU: 1.30s @ test case secret/024-60-50-50-slow-imp]
   AC submission RSRPearls.java (Java) OK: AC [CPU: 2.35s @ test case secret/024-60-50-50-slow-imp]
   AC submission RSRPearlsNoChecks.cpp (C++) OK: AC [CPU: 13.38s @ test case secret/024-60-50-50-slow-imp]
ERROR in submissions: AC submission RSRPearlsNoChecks.java (Java) got WA [test case: test case secret/026-60-50-50-WWWimp, CPU: 22.13s @ test case secret/024-60-50-50-slow-imp]:
---------

For Finn's Kotlin solution I tried commenting out the Manhattan distance
check ("if" statement between lines 167 and 171), but doing so produced
wrong answers (for instance, "EENNEENNWW" for data set 004), so timings for
"pearls_finn_nochecks" should be taken with a grain of salt. (I've put a "***"
next to the runs that gave wrong answers here.)

I also discovered an apparent bug in my solution---when I turn off the check
for "WWW" my program produces a (wrong) path rather than the correct answer
of "impossible". 

I don't think John's solution tests to see if a move gets too far away from the
starting point, so the running times for "Pearls_JPB" can probably be
improved by adding that check and should therefore perhaps be discounted.

Times for all versions of the solution are under .3 sec on data sets
001... through 007... . I did not test any of the files from 008... through
018... because they all had string length > 60.

For the rest, I'll just show the first line of output from the "time" command
for each test set.

TLDR: 60 seems very promising. A few run times are slightly higher than I'd
like.

Longest running times for programs with checking turned on/off:

data/secret/024-60-50-50-slow-imp.in:
  checking on:
	 2.078 (Bob, Java)
	 1.274 (Bob, C++)
	32.351 (John, Java)
	 4.771 (Finn, Kotlin)
  checking off:
	22.949
	12.536
	32.364
	49.981

data/secret/025-59-50-50-odd-imp.in:
  checking on:
	  .178
	  .005
	13.221
	 1.697
  checking off:
	 9.686
	 4.675
	13.049
	21.489

data/secret/026-60-50-50-WWWimp.in
  checking on:
	.252
	.006
	.233
	6.095 (I don't understand why this is so big)
  checking off:
	       3.974
	        .006
	      51.988
	1 min 10.757
================================
data/secret/019-60-50-50imp.in:Bob (Java, checks on)
real	0m0.239s

data/secret/019-60-50-50imp.in:Bob (Java, checks off)
real	0m0.442s

data/secret/019-60-50-50imp.in:Bob (C++, checks on)
real	0m0.020s

data/secret/019-60-50-50imp.in:Bob (C++, checks off)
real	0m0.147s
 
data/secret/019-60-50-50imp.in:John (Java, checks on)
real	0m0.560s

data/secret/019-60-50-50imp.in:John (Java, checks off)
real	0m0.676s

data/secret/019-60-50-50imp.in:Finn (Kotlin, checks on)
real	0m0.286s

*** data/secret/019-60-50-50imp.in:Finn (Kotlin, checks off)
real	0m0.161s
================================
data/secret/020-60-50-50-imp.in:Bob (Java, checks on)
real	0m0.279s

data/secret/020-60-50-50-imp.in:Bob (Java, checks off)
real	0m0.846s

data/secret/020-60-50-50-imp.in:Bob (C++, checks on)
real	0m0.042s

data/secret/020-60-50-50-imp.in:Bob (C++, checks off)
real	0m0.320s

data/secret/020-60-50-50-imp.in:John (Java, checks on)
real	0m1.216s

data/secret/020-60-50-50-imp.in:John (Java, checks off)
real	0m1.201s

data/secret/020-60-50-50-imp.in:Finn (Kotlin, checks on)
real	0m0.347s

data/secret/020-60-50-50-imp.in:Finn (Kotlin, checks off)
real	0m1.521s
================================
data/secret/021-60-50-50-imp.in:Bob (Java, checks on)
real	0m0.244s

data/secret/021-60-50-50-imp.in:Bob (Java, checks off)
real	0m0.358s

data/secret/021-60-50-50-imp.in:Bob (C++, checks on)
real	0m0.014s

data/secret/021-60-50-50-imp.in:Bob (C++, checks off)
real	0m0.097s

data/secret/021-60-50-50-imp.in:John (Java, checks on)
real	0m0.533s

data/secret/021-60-50-50-imp.in:John (Java, checks off)
real	0m0.544s

data/secret/021-60-50-50-imp.in:Finn (Kotlin, checks on)
real	0m0.280s

*** data/secret/021-60-50-50-imp.in:Finn (Kotlin, checks off)
real	0m0.161s
================================
data/secret/022-60-50-50.in:Bob (Java, checks on)
real	0m0.219s

data/secret/022-60-50-50.in:Bob (Java, checks off)
real	0m0.302s

data/secret/022-60-50-50.in:Bob (C++, checks on)
real	0m0.009s

data/secret/022-60-50-50.in:Bob (C++, checks off)
real	0m0.046s

data/secret/022-60-50-50.in:John (Java, checks on)
real	0m0.427s

data/secret/022-60-50-50.in:John (Java, checks off)
real	0m0.401s

data/secret/022-60-50-50.in:Finn (Kotlin, checks on)
real	0m0.219s

data/secret/022-60-50-50.in:Finn (Kotlin, checks off)
real	0m0.160s
================================
data/secret/023-60-50-50.in:Bob (Java, checks on)
real	0m0.212s

data/secret/023-60-50-50.in:Bob (Java, checks off)
real	0m0.214s

data/secret/023-60-50-50.in:Bob (C++, checks on)
real	0m0.006s

data/secret/023-60-50-50.in:Bob (C++, checks off)
real	0m0.014s

data/secret/023-60-50-50.in:John (Java, checks on)
real	0m0.267s

data/secret/023-60-50-50.in:John (Java, checks off)
real	0m0.274s

data/secret/023-60-50-50.in:Finn (Kotlin, checks on)
real	0m0.185s

data/secret/023-60-50-50.in:Finn (Kotlin, checks off)
real	0m0.166s
================================
data/secret/024-60-50-50-slow-imp.in:Bob (Java, checks on)
real	0m2.078s

data/secret/024-60-50-50-slow-imp.in:Bob (Java, checks off)
real	0m22.949s

data/secret/024-60-50-50-slow-imp.in:Bob (C++, checks on)
real	0m1.274s

data/secret/024-60-50-50-slow-imp.in:Bob (C++, checks off)
real	0m12.536s

data/secret/024-60-50-50-slow-imp.in:John (Java, checks on)
real	0m32.351s

data/secret/024-60-50-50-slow-imp.in:John (Java, checks off)
real	0m32.364s

data/secret/024-60-50-50-slow-imp.in:Finn (Kotlin, checks on)
real	0m4.771s

data/secret/024-60-50-50-slow-imp.in:Finn (Kotlin, checks off)
real	0m49.981s
================================
data/secret/025-59-50-50-odd-imp.in:Bob (Java, checks on)
real	0m0.178s

data/secret/025-59-50-50-odd-imp.in:Bob (Java, checks off)
real	0m9.686s

data/secret/025-59-50-50-odd-imp.in:Bob (C++, checks on)
real	0m0.005s

data/secret/025-59-50-50-odd-imp.in:Bob (C++, checks off)
real	0m4.675s

data/secret/025-59-50-50-odd-imp.in:John (Java, checks on)
real	0m13.221s

data/secret/025-59-50-50-odd-imp.in:John (Java, checks off)
real	0m13.049s

data/secret/025-59-50-50-odd-imp.in:Finn (Kotlin, checks on)
real	0m1.697s

data/secret/025-59-50-50-odd-imp.in:Finn (Kotlin, checks off)
real	0m21.489s
================================
data/secret/026-60-50-50-WWWimp.in:Bob (Java, checks on)
real	0m0.252s

*** data/secret/026-60-50-50-WWWimp.in:Bob (Java, checks off)
real	0m3.974s

data/secret/026-60-50-50-WWWimp.in:Bob (C++, checks on)
real	0m0.006s

data/secret/026-60-50-50-WWWimp.in:Bob (C++, checks off)
real	0m0.006s

data/secret/026-60-50-50-WWWimp.in:John (Java, checks on)
real	0m0.233s

data/secret/026-60-50-50-WWWimp.in:John (Java, checks off)
real	0m51.988s

data/secret/026-60-50-50-WWWimp.in:Finn (Kotlin, checks on)
real	0m6.095s

data/secret/026-60-50-50-WWWimp.in:Finn (Kotlin, checks off)
real	1m10.757s

