+declare -A links=([A]="c b end" [d]="b" [c]="A" [b]="A d end" [start]="A b" )
+declare -A __previous_points=([start]="1" )
+declare -A __previous_points=([A]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [c]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [start]="1" )
+Can't do c on start A c A
+declare -A __previous_points=([A]="2" [c]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="3" [c]="1" [b]="1" [start]="1" )
+Can't do c on start A c A b A
+declare -A __previous_points=([A]="3" [c]="1" [b]="1" [start]="1" )
+Can't do b on start A c A b A
+declare -A __previous_points=([A]="3" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [d]="1" [c]="1" [b]="1" [start]="1" )
+Can't do b on start A c A b d
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="3" [c]="1" [b]="1" [start]="1" )
+Can't do c on start A b A c A
+declare -A __previous_points=([A]="3" [c]="1" [b]="1" [start]="1" )
+Can't do b on start A b A c A
+declare -A __previous_points=([A]="3" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [b]="1" [start]="1" )
+Can't do b on start A b A
+declare -A __previous_points=([A]="2" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [d]="1" [c]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="3" [d]="1" [c]="1" [b]="2" [start]="1" )
+Can't do c on start A b d b A c A
+declare -A __previous_points=([A]="3" [d]="1" [c]="1" [b]="2" [start]="1" )
+Can't do b on start A b d b A c A
+declare -A __previous_points=([A]="3" [d]="1" [c]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [d]="1" [b]="2" [start]="1" )
+Can't do b on start A b d b A
+declare -A __previous_points=([A]="2" [d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+Can't do d on start A b d b
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [start]="1" )
+declare -A __previous_points=([start]="1" )
+declare -A __previous_points=([b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+Can't do c on start b A c A
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+Can't do b on start b A c A
+declare -A __previous_points=([A]="2" [c]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [c]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="3" [c]="1" [b]="2" [start]="1" )
+Can't do c on start b A b A c A
+declare -A __previous_points=([A]="3" [c]="1" [b]="2" [start]="1" )
+Can't do b on start b A b A c A
+declare -A __previous_points=([A]="3" [c]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [b]="2" [start]="1" )
+Can't do b on start b A b A
+declare -A __previous_points=([A]="2" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+Can't do b on start b A b d
+declare -A __previous_points=([A]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([b]="1" [start]="1" )
+declare -A __previous_points=([d]="1" [b]="1" [start]="1" )
+declare -A __previous_points=([d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [c]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="2" [d]="1" [c]="1" [b]="2" [start]="1" )
+Can't do c on start b d b A c A
+declare -A __previous_points=([A]="2" [d]="1" [c]="1" [b]="2" [start]="1" )
+Can't do b on start b d b A c A
+declare -A __previous_points=([A]="2" [d]="1" [c]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+Can't do b on start b d b A
+declare -A __previous_points=([A]="1" [d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([d]="1" [b]="2" [start]="1" )
+Can't do d on start b d b
+declare -A __previous_points=([d]="1" [b]="2" [start]="1" )
+declare -A __previous_points=([b]="1" [start]="1" )
+Got path: start A b end
+Got path: start b A b end
+Got path: start A c A b A end
+Got path: start b A end
+Got path: start b end
+Got path: start b d b A end
+Got path: start A c A b end
+Got path: start A b d b end
+Got path: start A b d b A c A end
+Got path: start A b d b A end
+Got path: start A c A end
+Got path: start b A b A end
+Got path: start b A b A c A end
+Got path: start A b A c A end
+Got path: start b d b A c A end
+Got path: start b d b end
+Got path: start A b A end
+Got path: start b A c A end
+Got path: start A end
+Total paths: 19