Здесь содержится жесткий спойлер на решение, которое я собрал, исходя из того, как бы я это сделал на Python, а потом смотрел в интернете, что для этого подходит на Java. Рекомендую сначала попробовать решить самостоятельно, а потом свериться:)