require 'pg' def main(str) start, goal = str.chars PG.connect.exec_params(<<~SQL, [start, goal]).first['cnt'] WITH RECURSIVE patterns("from", "to") AS ( VALUES ('0', '1'), ('0', '6'), ('1', '0'), ('1', '7'), ('2', '3'), ('3', '2'), ('3', '4'), ('3', '9'), ('4', '3'), ('4', '5'), ('5', '4'), ('5', 'B'), ('6', '0'), ('6', 'C'), ('7', '1'), ('7', '8'), ('8', '7'), ('8', '9'), ('9', '8'), ('9', '3'),