diff --git a/2024/ruby/day_19.rb b/2024/ruby/day_19.rb
index d35b87b..669b878 100644
--- a/2024/ruby/day_19.rb
+++ b/2024/ruby/day_19.rb
@@ -2,7 +2,17 @@ available, desired = DATA.read.split("\n\n")
available = available.split(", ")
desired = desired.lines(chomp: true)
-available = Regexp.new("^(#{available.join(?|)})+$")
-pp desired.select { _1 =~ available }.size
+available_r = Regexp.new("^(#{available.join(?|)})+$")
+pp desired.select { _1 =~ available_r }.size
+
+ways = Hash.new {|h,k|
+ h[k] = available
+ .select { k.start_with?(_1) }
+ .map { k.sub(_1, "") }
+ .sum { h[_1] }
+}
+ways[""] = 1
+
+pp desired.sum { ways[_1] }
__END__