diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index dd5ede8..7f49610 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -11,7 +11,8 @@
-
+
+
@@ -53,7 +54,7 @@
-
+
@@ -133,7 +134,7 @@
-
+
@@ -143,6 +144,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -263,12 +274,12 @@
-
+
+
-
@@ -291,11 +302,11 @@
-
+
-
+
@@ -304,26 +315,26 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -340,10 +351,10 @@
-
+
-
+
diff --git a/day19/day19.go b/day19/day19.go
new file mode 100644
index 0000000..e88b001
--- /dev/null
+++ b/day19/day19.go
@@ -0,0 +1,75 @@
+package main
+
+import (
+ "AoC2020/helper"
+ "fmt"
+ "os"
+ "regexp"
+ "strings"
+)
+
+func main() {
+ lineBreak := "\n"
+ args := os.Args[1:]
+ input, err := helper.GetFile(args[0])
+ if err != nil {
+ fmt.Println(err)
+ }
+ parsedInput := strings.Split(input, lineBreak+lineBreak)
+ rulesInput := strings.Split(parsedInput[0], lineBreak)
+ messagesInput := strings.Split(parsedInput[1], lineBreak)
+ var rules = make(map[string]string)
+ for _, val := range rulesInput {
+ cleanS := strings.Replace(val, "\"","",-1)
+ parsedRule := strings.Split(cleanS,": ")
+ rules[parsedRule[0]] = parsedRule[1]
+ }
+ regex := getSummedRule(rules,"0")
+ fmt.Println(regex)
+ count := getValidMessages(regex, messagesInput)
+ fmt.Println(count)
+ rules["8"] = rules["8"] + " +"
+ newRule11 := rules["11"]
+ for i:= 0; i< 10; i++{
+ newRule11 = "42 " + newRule11 + " 31"
+ rules["11"] = rules["11"] + " | " + newRule11
+ }
+ regex = getSummedRule(rules,"0")
+ fmt.Println(regex)
+ count = getValidMessages(regex, messagesInput)
+ fmt.Println(count)
+
+
+}
+
+func getValidMessages(regex string, messagesInput []string) int {
+ r, _ := regexp.Compile("^" + regex + "$")
+ count := 0
+ for _, val := range messagesInput {
+ if r.MatchString(val) {
+ count++
+ }
+ }
+ return count
+}
+
+func getSummedRule(rules map[string]string, rule string) string{
+ r, _ := regexp.Compile("[0-9]")
+ if rule == "+"{
+ return rule
+ }
+ number := r.FindString(rules[rule])
+ if number == "" {
+ return rules[rule]
+ }
+
+ stringParts := strings.Split(rules[rule],"|")
+ newRule := ""
+ for _, val := range stringParts {
+ newRule += "|"
+ for _, s := range strings.Fields(val) {
+ newRule += getSummedRule(rules,s)
+ }
+ }
+ return "(" + newRule[1:] + ")"
+}
\ No newline at end of file
diff --git a/day19/day19Input.txt b/day19/day19Input.txt
new file mode 100644
index 0000000..c0756df
--- /dev/null
+++ b/day19/day19Input.txt
@@ -0,0 +1,598 @@
+108: 117 50 | 63 64
+124: 50 64 | 64 64
+123: 64 119 | 50 85
+45: 60 64
+32: 20 50 | 79 64
+36: 97 64 | 70 50
+97: 50 64 | 64 50
+21: 50 104 | 64 83
+59: 50 124 | 64 83
+10: 115 64 | 34 50
+118: 50 124 | 64 4
+60: 12 50 | 4 64
+84: 29 64 | 99 50
+111: 64 27 | 50 14
+18: 64 101 | 50 29
+13: 64 45 | 50 1
+62: 64 97 | 50 83
+117: 124 64 | 70 50
+98: 50 4 | 64 124
+15: 64 114 | 50 12
+7: 100 64 | 56 50
+78: 99 50 | 52 64
+82: 114 64 | 97 50
+22: 6 64 | 4 50
+63: 12 50 | 114 64
+16: 64 52 | 50 70
+76: 50 46 | 64 13
+31: 64 69 | 50 67
+37: 21 50 | 128 64
+95: 68 64 | 16 50
+12: 64 50 | 50 30
+26: 50 12 | 64 83
+112: 113 50 | 72 64
+33: 104 64 | 52 50
+25: 70 64 | 114 50
+96: 51 64 | 105 50
+51: 50 47 | 64 26
+91: 103 50 | 9 64
+65: 66 64 | 23 50
+116: 64 114 | 50 97
+42: 64 54 | 50 40
+4: 50 64
+79: 50 97 | 64 29
+110: 64 116 | 50 118
+0: 8 11
+73: 50 12 | 64 101
+70: 50 50 | 64 50
+74: 61 50 | 65 64
+27: 50 107 | 64 90
+101: 30 30
+105: 17 50 | 24 64
+61: 58 64 | 102 50
+17: 50 83 | 64 29
+72: 30 97
+88: 64 38 | 50 2
+14: 50 36 | 64 2
+125: 64 50 | 64 64
+127: 95 64 | 28 50
+83: 64 64
+80: 64 107 | 50 81
+106: 50 101 | 64 29
+56: 88 64 | 49 50
+52: 50 50 | 64 64
+46: 80 50 | 120 64
+94: 68 64 | 33 50
+47: 50 114 | 64 6
+69: 44 64 | 57 50
+54: 74 64 | 3 50
+89: 50 83
+48: 106 64 | 59 50
+87: 86 50 | 37 64
+35: 64 73 | 50 55
+115: 50 99 | 64 70
+44: 111 50 | 109 64
+75: 78 50 | 22 64
+20: 64 101 | 50 6
+41: 50 4 | 64 101
+6: 64 50
+66: 50 93 | 64 115
+90: 64 101 | 50 124
+23: 50 82 | 64 77
+81: 50 114 | 64 101
+30: 50 | 64
+100: 122 50 | 75 64
+86: 50 73 | 64 18
+92: 64 48 | 50 71
+68: 6 50 | 114 64
+121: 50 70
+8: 42
+85: 64 112 | 50 110
+38: 64 104 | 50 4
+120: 84 50 | 55 64
+67: 64 7 | 50 53
+64: "a"
+55: 50 52 | 64 125
+28: 89 50 | 84 64
+71: 50 39 | 64 16
+109: 43 64 | 94 50
+99: 50 50
+43: 41 64 | 77 50
+119: 64 108 | 50 35
+57: 87 50 | 96 64
+39: 64 97 | 50 6
+104: 50 64 | 64 30
+29: 50 64 | 50 50
+34: 83 50 | 125 64
+2: 99 64 | 124 50
+11: 42 31
+114: 64 64 | 30 50
+93: 50 97 | 64 101
+58: 50 33 | 64 121
+113: 64 99 | 50 70
+128: 64 4 | 50 125
+40: 123 64 | 76 50
+107: 50 52 | 64 83
+102: 126 50 | 25 64
+126: 50 125 | 64 97
+19: 50 124 | 64 114
+24: 114 64 | 29 50
+49: 20 30
+1: 64 19 | 50 15
+103: 26 50 | 18 64
+9: 64 117 | 50 62
+50: "b"
+53: 91 64 | 5 50
+77: 6 64 | 99 50
+5: 32 64 | 10 50
+3: 64 92 | 50 127
+122: 115 64 | 98 50
+
+bbabbaaabbabbaaaabbbbbbb
+bbaabaaaaabbbaaaabaaabba
+baabababbbbaaaaabbabaaba
+baaabbbabaabbaaababaabbaaaaabbbb
+bbbbaabbbabaabbabaabaaaa
+aabaaaabaababbbbababaabb
+bbabbbaaabbbbabbbbabbabbbbbbbbabaabaaaabaabaabbabbabbbbbaabaaaba
+baaaaaaabaabbbaaaaaababb
+aaabbabaaabbabbbabaaabba
+abbbbbabbababaabbaaabbbaababbbbaababbabb
+bababbaabbbbbbaababaaabaaabababbabababba
+babbaabbbabaabbbbbaaabba
+abbbbbabbbbaababbababaaa
+aaabaaababbaaabbbbbabbaaaabbbbba
+bbaabaaaabbbaaaabbabbbab
+baabaabababbaaababbababa
+abbbbbabababaaabbbbbbbba
+aababbbababbababaaababababbbbbbabaaabaaa
+bbbbabaabbabaabbbbabbbaa
+aabaabbbbbbababbbabbbaba
+abbababaabbbaabbbabaaaababbbaabababbaaaaababbaabbbaabbabbbabaaabbaabaabbbbaaabaa
+baababaaabababaabaaabbabbbaaaabbabbabaab
+bbbaaaaabaababaaaaabbaaabbbababbaaabaaba
+bbababbabbbbbbabbbbabbbbbaabbbabaabbbbababbabaab
+abbbbbabbbabaabbbabbaabaaababaab
+bbbbabbbbaababaaaaabbbbabbabbbbbbabbbbaaabaabbabaabbabbb
+abbaabbabaaabaaaaabbbbaaaaabbbbb
+aabaababababbbabbbabbbaabaaaabaaaaabbbbbaabbbabbaaabbbab
+abaabaaabababbaababbabab
+aabaaaabbbaababbbbabaaab
+bbbababbabbbbabaaaabababbbabbbabbbbaaaabaaabbbbbaabababbbbababbbbbabaabb
+aabbaababaabaaaaabbbbbabbbaaabaaaabaabab
+baabbaaaaaaabbabbbababab
+abbbabaabaabbbabbabaaaabaabaaaababaabbbb
+aabbbabaaabababaabbababb
+abababbbabaaabbaaaaaaababbabaabbbabbaaaabbbbbaab
+abbabbaabbbaabbbabbaabaa
+baabababbaabbaaabaaababb
+aababaabbbabbababbaabababaaaabbabaabbaab
+bbaaaabbbbbbababaabbbaaaabaabaaabbbbbbba
+abbaabbbbaababaaaabaabaa
+aaaaaabbabbaabbbbaabbabb
+bababababababaabaaabbaabbababaababaabaabababbaba
+ababbbbabbbbabaaabbbbbba
+babaaabaaabbababbabbbbaa
+bbabbbbabbbbbbabaaababbbaaabbabbbabbabbababbabbbbaabbbaabbababaa
+bbaabaaaaabbbabaabbabbba
+babababababbaabaaabbbbbb
+baabbbabaabaabbabaabbbbb
+babbbbababbaaabbbaaabbaabababbaabababaabbbbbaaabaaaaaaaa
+aabbbabbababbbbaaaaaabaa
+bbbababbababbbbabbaaabba
+aabbabbaababaabbbbaababa
+abbabaaabbbaaaaabbbababaaabbababbabbbaab
+babaaaaaaababababbbabbbbbbbbbbaa
+abaaababbabbbbbabaabaabb
+babbbabbabbbbbabababbbbaaababbab
+aaabbbbabababaabababbbbaabababab
+baaabaabbabaaaabbababbaabbbabbbaabbbabbb
+babaaabbabbabbabbabbbaba
+bbaabbbababbbbabaaaabaaaaabbabababaabaab
+abaaabaaabaabababbaaaabbbabbabab
+bbbaaaababbabbabaaaaabab
+bbbbababbaaabbaaabaabbbb
+abbbbabbbaaaaababbbbbbba
+bababbabaababbbbbababaaa
+bbababbabbbbabbbbbababaabbbbbbbbabbbbabbbbaababa
+baaaaababaabababaabaaabb
+baabaababaaabbaaabababab
+baaaaaaabbbababbbbbaabbbaababaaa
+ababaaabbabaabbbabababba
+baaabbbaabbabaaabbaaaaabaaaabbabbabbbbbbbbbaabaa
+bbbababbabbbaaabaababaab
+aaaaaabbaabbbaaabaaaaabb
+babaaabbbbabbaaabbabbaab
+aaabbaabbbababaaabaabaababababab
+aaabaabbbabbaaaaababaaabababaabb
+bbaaaabbbaaabbbaaababaaa
+bbabbbbabbbaababbabbabba
+baabababaaababaababaaaaaaababbab
+baabbaaaaaabaaabbbbbaaaa
+babbaaababaabaaaaaaabbbb
+babaaaaaaaaabbabaabbababaabbabbaababaaabbbaabbaaaaabbbbb
+abababaabbabaabbbaabbaaabbaaaaaa
+bbbbbbaaaaabbabbbabbaaaabaabbbaababbbbbbbaabbbbaabbbababaabbaaababaababbabbbbaaaaabaaaaaaabaabab
+bbababaabbbbaabbbbaabbbbbbbbbbbabbbaabbabbbbbabbabaaabaaaaabaaaa
+abbbaabbbbbaabbbbabaabaabababbbbabaabbab
+babaababaaababaabbaabbbbaaabaaabaaababbbabbbaaaabbabbbbbbbaababaabaabbbbbbbbbaaaaaababaa
+babaabaababaabaabbaabbbb
+bbbbbaaabbababaaabaabbaaaaaaabbbabbabaabbaaaabba
+babbbbbbaaabbbabbbbabaaa
+abaabaaababbbbabaababbab
+bbaaabaabaaaaaaaaaabbbabaabbbbbb
+aaabbbabaaaaaabbaabbaabbbaabaabaaabbababaaabaaababbbabab
+aaabbaabaabbabaabbbbabbabaaabaabbaabbabb
+babababaabaabaaababbaaba
+babbbbbbabababaabaabbaba
+baabbbabbbaaaaabababbaabaabbbbaaababaabaabbaabaaaaaabbaabbaaabba
+abbbabaaabbbaabbbbaaabba
+baabbbabaabbbbaaaabbbbbb
+bababbabaaaabaaaaabbbbaaababaaaaaaababbaaaabbbbbabaabbab
+abbaabbbbbabbbbbaabbbaab
+ababbbabababbbaaaabbbabbbbaabaabbbbaaabbbaababbaaaaabbbbbaabbabb
+aaababaaabbaabbbabbbbaaa
+bbbababbbabbbaaaaabbbbaabaaabbaabbabababaaaaabaa
+babaabaaabbaabbbbbbbabaaabbaaabbbaababbaabbbbbbbbaabaaaa
+bababaabaabaaaabbaaaabba
+baabbbbabaabababbaaabbabbbaabbbaabbbbabaababaaaaababbabaaabaabaaaaaababb
+aabbbabbbbabbaaaaaaaabba
+bbbaaabbaabbababbaabaaaa
+abbbbbababbaabbbbaaabaaabbbbbabbbaaababaaabbaaababaabaaabbbabbaabbbbbbababaababb
+babbbbbbababbbaabbabbbab
+abbaabbaaababbbabbaababa
+aaabbbabbabaabaaabbaabbbabbaabbbaaaaaaaa
+abbbbabbbbbbabababbaabab
+bbbbababaaabababbbbbbbba
+bbbabaabababbbabbaaaabbbbababbabbabababa
+aababababbbababbbbaabaaaababbababbbbaaaaabbbbabaabaababbabbbaaabbabbaaaabbbbababbabaabab
+aabbaaabababbbaaabbaabaabababaaaaaaabababbabaaab
+bbaaaaabbabbbbbabbabbbab
+babbaababbbbabbbbbabaaab
+aabababaaabbababbbbbaaba
+babbaaaabbbaabbbbbbbabaaabbbbbba
+bbaabaabbbabbbbaabaaababbaabababaabaaaaa
+abaaababbababbaaabbbbbbb
+bbaaaabbabbabaaaababbabb
+aaabababaababababaaabbbb
+ababbaaaabbbaabbbaabababbaaabbababbabbbabbaaabbb
+aababbbaabababbabbabbbabbbaabababbbaababbabaabbabaababaa
+baaabbbababbbabbbbaabaababbbbabbbabababbaabbbbba
+aabababbaababbbbabbbaaaababbbbabbbbaaabbbabbbabaabaababb
+baaabbabababbaaabaaaabab
+aababbbaaabaabbaababbabb
+aaabbaaaaababbbbbaabbbbbbaaaabaa
+bbbbbaaababaabaaabbaabbbbbabbbabaaaaabab
+aababbbbaabaabbabbabbaab
+bbbaaaabaaaabaababbbbbbb
+abbabaaaaaaabaaababaaabaaaababbbabaaabbb
+abbbaaabbabababaabbbbbaa
+baababaaaaababababababaabaaabbbaabaabaaa
+bbbbbbbbababbbbabbabbaab
+ababbaabaabaabbbabbbbbbb
+babaaababaabbaaaabbabbaaababbababbabbbaaababbbabbbabbbabbabbbabb
+babaabbabbbaaababbaaaaaa
+bababbbaabababaabababaabaaaaaabbbbbababa
+bbbbaabbababaababaaaaaab
+ababbabbbabbbbaabaabbbbb
+aabababbabababbaababaabbbbbaabaaabbbbbababbbbbabbbbbabbbbababbabbaababaa
+ababbbababbabbaabaaaaabb
+babaabbbbabbabbbaaabbaabbaabbbababbbabba
+abbbaaabbaababaabbabaaba
+bbbabaabbabaabbbaabaabab
+ababbaaaaabaaaabbbaaabab
+baababababbabbaabbababab
+abbbbbabbbbbaabbaaaaaaab
+baaaabbbaababaaaaabaaabbababbababaaaaabbbaaaabaa
+bbbaaabbabbbaaaababaaaaa
+bbbbaabbbbabbaaabbaaaaba
+aaaabbabaaabbabbaaaabbba
+abaabaaabbbaaaababbaaabaabbbaaabbbababaaaabbaabbabbabaababbabbbb
+aaabaabbbbaabaababbbaaababbbaaba
+baaabbbbbabbababbabaabab
+babbbabbabbabaaaaaaaaabbbbaaaaaa
+ababbaaaabaababaaaabbbbb
+bbbaaabbbaabaababaaabbaabbbbbbaaabbbbbaa
+ababaaaabbbbbbbbabaabbaa
+bababaababbbabaaaabbabaa
+babbabaababbaaabbabbbbaababaababbbbaaaaaaaabaabaaaaaababbbabbbbaaaabbbaa
+baaabaaaabbbabbabaababbb
+babaaaaabababababaabbaabbaabbbbabbabbabbbbaaaabababbabbbaabbbaaa
+baabaababbaabbbaaababbab
+aabaabababaabbbabbbabaaaabaaabaababbabbbaaabbbbbbaabbbaabaaabbbbaababbbbaabbaabb
+aabbbabbbbaabaaabbbbbabb
+aaabbaabaabbabbabaaaabba
+baaabbbaaaabbaaababbabba
+abaabbbababbbbababbaaaaa
+bbaaabaaabbbbababbbaababbbbbbaaaabbaababaaabbbbb
+ababaaaabbbbbaabbababaabbbabbaaabbbbaaba
+aabbabaaaabbbabbbaabbbbaababaababbbabbbbabaaabaabbaaaabbaabaaaaa
+bbbabbababbaaabbbaabbaaabaabbbaaaabbbbaabbababaaaabababb
+babaaababbbbbaaaaabaaabb
+abbbabbabbbbaabbbbabbbaa
+bbbbabbbababbaabbbabaaaa
+abbbaabbbbbbbaaaabbababa
+bababaabbbbbbbbbaaaaabbb
+babaaaababaabababbaabbaa
+abbbaabbabaababaabaaabaaabbbabaabbaababa
+bababbababbabbaabbaaaaaa
+babbaaaababbaaabbbabaaaa
+bbbbbaaaaabbababaaaaabaa
+abaababaabaaabaaabaababb
+baabbbbababbaabbbbbbbaba
+bbabbbbbbbaaaaabbbaaaaabbaabbbaabbbbaaabaaaabbaa
+aaabbbaaaaaaabbbaaabaabbaaaaaaaabbbaaabbbbbbbaba
+aabbbababbababbaaaaaabbb
+bbaabaaaabbaaabbabbabbababaaabbabbaaabba
+babbaabbabbbbabbbabbbaaabbbaabbbbabbbaababaabbabbabbbbaa
+bbbaabbbaababababaaaaaab
+bbaaabaababaaabbaabbabbb
+aaabaabbbbabbbbbababaabb
+babaabbbbbbaababaabbbabbabbbabaabbabbaaababbabba
+babbbbbabaaabbbaaaaaabab
+aaabbbbabbababaaababbbbb
+abbbaaaabaaaaababbabbaba
+baabaaabbbbabbbbaabbbbaababaaabbabaaabba
+ababaababaababaaaaabbbaa
+baaabbabaaabbaabbbbbabaaaaaabbaaaaaabaaabaabaabaabaaabbaaabbababaaabbababbaaaaba
+baabaabaaaaaaabbabbabaaabbabaabbbbabbbbabbabbaabbbabbbabbaabaabb
+aabbbaaabbbabbbbbbbbbbba
+aaabaabbaababbbabbabaaaa
+aaabbabbabbbbbbaaabbbbbbabbbbaaa
+aabbbbaaaabababaaababbbaaaabaaaa
+bbaabaabbbbbbabababaababbbbbabaabbbbabaaabbabaab
+aaabaabbaabbabbabaaaaaab
+baaaaabaababbbabbbbaaaaa
+ababbaabaaabaabbabaaaaba
+baabaabaabababaababaaabbbbabbabb
+baabbbabbbababbaaababaaa
+aabaaaabaabaaaabbabababb
+babbaababaabaaabaaaabbba
+abbaabbbaabbbaaabaaababa
+aabbbabbaababbbbbbaababbbbbbbbaaabaaaabb
+babbabbaababababbaaaabbbbaaaaaabbaaabbbbababbbabaabababa
+baabaaabbababbabbbaababa
+babbbabbbbabbbbbabbababa
+aabbababbbbbbbbbabbaabab
+bbbbbaabaabbabbaabaaaabb
+babbbbbbbabaaaabaabbbabbbabaabbbbbababaabbbbaabbabaaabbb
+bbabbbbaaaababbabaaaaaab
+abaaaabababaabbaababaabb
+aaabbbabababbaaaaabaabbaababbbaabaaabbab
+aaaabbabbababbbabaabbaab
+bbaaaaabbbaabaababbabbba
+baaabaaabaabbbbaaabaaabb
+aababbbbbbbababbbaaabbbbbbaaabba
+aaaabaaabbbbbbbaabaabbab
+aabaabbabbbaabbbaabbabbababaabbababbaaabaabaabaaabaaabba
+baababaabababababbbbbaba
+bbaabaaabaaabbababbababa
+abbbaaaaaaababaabaaabbaabaaabbaaaabbaaba
+abbabbabbbbaaabaabaababb
+babbabbbaabbbaaaaaaababb
+bbbabababbaabaabaaabaaaa
+bbbabaaabaababbabbaaabbaabaabbaa
+baaaaababbbbbaabbbabbabb
+baabababbaaabbbabababbaaababbabbabbbbbbb
+abbbaabbabaaaaaaabaaaaaaaaabbbbababbaaaaababbababaabbbbbbabbbaababbbbaaa
+aaabbabbbaaaaaaabababaababaaaaab
+babaaaaaaabbbababbbbabbbabbaabbbaaabbaaaaaaaaaab
+aabbbabbbababbaabbbababaabbaabbabaaaaabb
+babbaaabbaabbbaabaabbabb
+abbaabbaaabababbababbaba
+abbbbbabbbbbbbbbbaabbabb
+bbbaabbbbabaabaababaababbabbbabaaabaaabb
+baabbbbabbbbbbbbbbbbaabbababbabb
+aaabbbbaabbabbaaaaaababa
+aabaabbabbbaaabababbbbbaaaaaaababaabbaba
+abbabbabbaabbbabaaaabbaabaabbabbababbbbbbbaaaaaaaaaababbbbbaaabaaabaaaaabaaaabaa
+aaababaaaabbababbaabbbaabaababaaaabaaabaaaaabbaa
+baabaaabaaaaaaaaaabaaabbbbbbaaab
+abaaabaaaaaaaabbbbaaaaba
+babbaaabbbaaabaababbbaba
+babbbbbabbaabaababbababbbabbabbabbbbbaba
+aaaaaabbbaaaaaaaabaaaabaabbaabbaabbabbbbbbababbbaaaabbbb
+bbbaababababbaabbbbabaaa
+aaaaabbabbaaaaabaaabbaabbbabbabaababaabbababbaaababbabaabbbaaabbabbbbabb
+babaabaaaabbbaaaaabbaaab
+bbbbabbbbaaabbbabbbaababaaabbaabbabbbaba
+aabaabaaabaaaabbabbabababaaabbabbbaaaabbbbbbaaaaababbaabaaabaabaabbababb
+ababbaaaababbaabbaaaabbabababaababbaaabb
+abababababbbabbbaabbbaababbabaab
+babbbbabbbbababbbbbbbbabbbababbb
+aababbbbabaaaabaaabaabab
+bbbaaababababbababaababb
+bbbabbbbbabbbabbaabaabab
+baaababbaaabbbaaabbbabaaabaabaaaaaaabaaaabaababa
+bbbbbbbbbbabbbbbbbbbbbabaaabbbaaabbbbaab
+babbabbbbbbbabbbbbaaabba
+babaaababbbbabaaaaabaaabaababababbabaaab
+abaababaababbaaabbabbbbbabbabbab
+bbbabbbbaabaaaabbbabaabbaaababbaaababbbbabaaaabbbbbabbbabaaaabab
+babbbbbbaaabaabbbbbabbbbbabaabaaabaaabaabaaababa
+abbabbababbbbababbabaaab
+ababbaaaabaaabaabbaababb
+aabaaaabababaaaabbbbaabbabbbaaaaabbaaaab
+babaaaaaabbbaaaabababaababbbabbababaabaababbbbaaaabaabab
+abaaaaaababbaabaabbaaaaababbaabbbabbbbbbbaaaabbbabaabbabbbabababaaababba
+aabbbabababbaabbababbabb
+aaabbaaaabaabbbaababaabb
+bbaabbbabbbbababaaabbbabbbbbabbabaaaaaabaabbbbaaaaabbaabbaaaaaaa
+babaaaabaaabbabbaaabbaba
+aabbbbaabbbabbaabbbbbbba
+bbaaaaaaabaabbaaaabaaaba
+abbbaaabbabbbbbbbbbbabaababaaabbbbaabaaaabbbbbbaabaabbaaabbbababbbbabbba
+abbaabbbaabbabababaaaabaabbababbabbbabbb
+abbaaabbbbaabaaabbbbabbbbabbbbbbbaababbb
+bbabbbbaabbbaaaabbbaababbbababbababbabba
+abaaabaaabaabaaabbabbbaa
+aaabbbabbbbbababaaabaaba
+aabaabbabbbaaaabbabbabba
+abbaaabbbbaabaabbababaaa
+aabbabababbaaaaaaaaaabbbabababaabbbaaabbbbbaaaaa
+aaaabbabbaababaabaaabaab
+bababbaaaaabbaaaabbabbbb
+abbaabbbabaaababbbbaababbabbaaaaabbbaaababbaaabaabbbbbba
+aabbbabaaaabaaabbaaaabaa
+bababbaabababbaabaabbaba
+bbaabbbbbbbbaaaaabaabbbb
+bbbbbbabbabbbbbaabbbbaaa
+bababbbabaaabaaabbbabaab
+baaaabaaaabbbbabbabbabbaaaaabbaa
+bbbbbbabbaabbbabaabbbaab
+baabaabaabbbaabbaababbab
+aaabbaaabbbbababaabbababbabaabbaabaabbbabbbabaab
+baaaaaababbbbbbabbabababbbaaabbbaabaaaababbbabbbaababaabbbaaaaabbaabbbbbabbababb
+abbbabbabbaaabaabaaabaab
+abaabbbabababbabababaabaabbabbabaabbaaaabbbbaaaa
+bbabbabbbbbbaaabaabaababababaabbabababba
+abaabbabbababaaabbabbababbabaaaababaaaaaaaaaabaabbbbaabbbbbbabaaaaaababbbbabaabaaababbba
+bbaabbaabbbbbbabbabaaaabababaabbabbabbabbabaaabb
+abbbaabbbbbaabbaabbbabab
+bbbbbaabaaaabaabbaaababbabaaaabbabababbb
+aabbbbbabaabaababaaabbaaaabaabbaabababbbaaabbbbb
+aaaabaaabbbabababaaabbaaaabbabababbaababaababbaaabaaabba
+bbbbabaaababbaaabbabaabbbabbaaaaaaaaaaab
+babbaaaababbbbbabbbabababaabaabb
+baabababbbbbabbbabbabbba
+babaabaaaaabbaaaaaaaaaaa
+bbbaaaabbabbaabbbabbbaba
+abbaaabababbbaaabbaababb
+aaababaabbabaabbbababaaa
+baaabbaaababbabbbabaaaaaabaabbbbaaabaabaababbbbbbbaaaabbaabbbaabababbabbababbaaa
+bbaabaabbbbababaaabbaabbaaabababbbbabaaaaaaaaaabbaaaaabbababbbbb
+aaababbaabababaabbbaaabbbbabbaab
+aabbbabaabbbabaabaabaaaa
+ababbaaababbaababbabbaba
+babbabaabbaaabbbabbbaaaaaabaabababaabaaaabaaabbbabbaabbbbabbabbbabbbaaab
+ababbaaaababbaaabbbbaaba
+bababbaabaabaaababbaabab
+babaabbaaabaabbaabbbbabbaababbbabaaaabaaaababaab
+babbbaaaabbbbbabaabaaaabbbabaaaa
+abaabaaabababbabbbabaaab
+babaabbabbbbabaaabaaaabaabbabbabaaaabbab
+aaabaabbaabbbababbabbbbbaaabaaaa
+ababaababbbaabababbaaaaabababbbbaabbaaba
+aabbbabbabbabaaaabaabbab
+bbabbaaabababbaabbababbb
+baabbababbababbaaaaabbbbaabbbabaabaabbbbbabaabaabbbbbaaa
+aababbbabaaaaaabbaaabaab
+bbbbabbbaaaabaaaababaaaabbaaaaaaababbabb
+baababbbaabaababbbababbbbbbaababbbbbaaabaaabbababbabaaaaababaaabaaaaabbabbbababb
+baababaabbbabbbbbaaaabab
+abbaaababbbaaabbbabababb
+bbaaaaabbabbaabbababbabb
+aabaabbaababaabaaaabbaba
+bbbaababaaabbbbaabbaabbbbaaabababbbbbaba
+bbaabbbabbaabaabaaaaabaa
+aabaaaabbaaabbababaabbbabbbaaabbaabaaabaaaaabbba
+babbaaabbaaabbaabbabbabb
+bbbaababaaabbbabbabaabab
+aaababaabbaaabaaaabaabbaabaabbab
+aaababbaabaabaabbaaaaabbbbabbaaaaaaabbababbbaaaabaabbaabaabbaabbbbbabbab
+aaaaaaaaabbaabaababbbbbababaababbabbaabbababbbabaaaaaabaabbbabab
+baaaaabbabaaaabbaaababbabaabbaababbbbbabaaababbbbbbbbaaaabaaabababbababbabbabaababababab
+abaaaaabbaabababbabaaaababbbaaaabbaaaaaa
+ababaaaabbbbbaaaababaababaabbabbbbaaabab
+bbaaaabbaabbbabbabbaabab
+baabaabaababaabaaaabaaba
+baabbbabbbaabbaabbababaabbbaaabbbaaaabaabaabbbbbaabbabaaabbababbbbbbbaabbabbaaabababaabb
+aaaabaaaabbaaababbabbaba
+aabababbaaabbbababaababb
+ababaaabababbbabbbabbbab
+abbbabbaaaababaabaaabbaaababbbbaaabbabbaaaaaabaabaaabbbbbbaaabbaaaaaabba
+baaaabbbbaabbababbabbbabbabaaaba
+baabaabaaaaabbabaabaabbbbaaaabbaabaaabbb
+abbaabbbababbaaababaaababbbaaababaaaaaabbbababab
+aabbbbaaaaaabaababbaaaababaaabbbaabbbaaaabbbbbababbbaabaaaaabbabaaaaaaaa
+baaaaaaabababaabababbaba
+bababbbaaabbababbbaaaaba
+aaababbaaabbabbaababbbbb
+aabababbabbbbabaabbabaaaabaabbbabbababbabababbabaaaaabba
+abbababbbaabaabbbaabbaaaabaaabbaababbbbbbbbbbabbaababbaabaabaababbbabbabaabbabbbbbaaaabbbbbababb
+aabbabbaabaababaaaaaabba
+aabbababaaababbaabaabbab
+abbbbbaababbaababbababaabbaaaaaabaaabababaaaabbbbbaaabbb
+aaaaabbabaababbaaabaabaa
+babbbaaabaabbbbababaabbaabaaaaabbbabbbaaabbbabbbbabbbbaa
+aaaabaabbabaaaababababba
+abbbabbbaaaaabbbbbaabbaa
+bbbaaaabbbaabbbababaaabbbbababaabbaaaaaa
+aaaabaabbbbaaaabbbbabbab
+aababbbbbaabababbbaaabba
+baabbbbababbbabbaabbabbabbbababbaaaaabab
+bbabbbbabaabbaaabaabbbbb
+ababbaabbbababbabbababab
+aaabababbbbababbabaaababbbabaaba
+aaabababbaaabbbabbabbabb
+bbbbbbabaabaaaabbbaaabab
+abbabbaabbbabbaaabbaabbbaabaababaababbab
+abbaabbababbaaaaabbaabbaaabaabbaaabbaaba
+ababbbabbaababbbbabbbbaaaabbaaabaaaaaaab
+baabbbbaaaababbbaabbbbbaaabaaaaa
+bbbababababbaabaaaaaabaa
+baabababbbbaabbababbbbbaaaababbaabaabbbaaabbabaabbaabbbb
+aabbbaaabbbbbaabaaabbaba
+babbbabbaabbaabbbaabbaab
+bbbabaabbbbaabbaaaabbabbaaabababbbabbaaaabbbaabbbaaabaaababababb
+bbbaaaabbbabbbbabbbabbba
+aabbbabababaaaaabbbabbaaaabaaaba
+bababbaababababaabaaaabb
+bbbaaabbbbbaabbabbbbbbaabbaabbbb
+abbbaabbbababaabbbaaaaba
+abababaabaaabbbabaaabbabbabaaaabbbaaabab
+bbbabbbbbbbaaaaabbbbababbbabaaabababbbbb
+abaaaaaaababbaababbaaabaabbaaaab
+bababaababbbabbabbabaaba
+babbaababababaabbbbbbbbbabbababbbababbbb
+bbbaaabbbbababaababbbaba
+aaabbbbaabbbababbababaaaaaabbbbaababbbbbabaaababbbabbbaaaaaaaabaaaaaabaa
+bbaabbbabbbbbbaaaaaaaaab
+baaabbbabbbaaaaaaabbaaaa
+aaaabaaaaabaabbaabbabbbb
+abbbbabbbaababaaabababbbbaaabaabaaaaabaabbbbabbaabbabbbb
+aaaabaabbbababbababbaabbbbabaabbbbbbaaab
+bbbbbaaabbbaababbbbababbbbabaabbaabbbbba
+aaabbbbababbbabbbbbaababbbbbbbbbbbabaabbaaaaabaa
+aabbbabaababaaabbabbbaba
+bbbaababbbbbbbbbabaabbaa
+ababaaababbbbbabaaaaabab
+bbbababbbababbbaabbababa
+bababbbaabbbabbababbabaa
+bbbababaabaaaabaaaaabbbb
+ababaaabbbbaaaabbbabaaba
+aaababaabbbaaabbbbbaaaababbabbbb
+babbbbabbababbaaababaaaaabaababbabbbabbb
+bababbabbabbabbbaabbababbaabbaaaaabbbaabaabbaabbbbaaabbaabbabbbabbbbbaab
+babbaababaaabbaaababaaaabbbaabaa
+bbabbbbabaabababbaaabaab
+abbbaaabaaababbaabaabbab
+bbbababbbbbabbbbbbabbabb
+bbbbbaababaaaabaababaabb
+abbabaaaabbbaaaababbbbab
+ababbbabaaabbbabaabbbbaaaaabbbbbaabaaaba
+bbaaabaaaaababaaabaabbbb
+abaaabaababaaabbbaaabbaabbbbabaabbabbaab
+bbbbbababbabaababaababbbaabbaabaaabaaaaaaabbbbba
+aabbbabbabbaaababbababaabbbabababaaaaaaaaabaabaabaababba
+abaaaababbbbbbababaabbbabbbaaaaaababbabb
+babbbbbaaaaabbabbaaaaabb
+aaabaababbaabbaaabbbbbabbbbababbaabbbbbababbbaab
+abbabaaabbbabbaababbaabbaabbbbba
+babaaabaabbbabbaaaaabbaa
+baabbbbabaaaaababbbaabbbaaaabbbb
+aabbaabbbbbaaaabbbbabbaaabbabbababbbbaababaababb
+abaaaabbbbaaababbbbbbabb
+abaaaabaababbbabaabaaabb
+abaababbaabaababbaaabbbb
+bbabbabbabababbaaaabbabaabababab
+aaaaaabbbabaaaabbbbbbbaabaaaaabbaababbabbabbbababaaaabba
+bbababbabaaababbababbbbbbabbabab
+bbabbaaababbbbaababbaaab
+baaaaaaaaabababbaabaabaa
+abbaaabbabbbaaaababaaabaababaabaababaabb
+abaaaaabaaababbaaaabaaab
+abaaaaaabbaabaaaaaabbaabababbbaaabbbabbbbaabbaab
+abbaaabbbbaabbaaaabbbaaabaabaaaa
+aabaaaabbbbaaaabaaababbb
+abbaabaabbbbababbabbaaababaaabbaaabaaaabbabababababababb
\ No newline at end of file
diff --git a/day19/day19Test.txt b/day19/day19Test.txt
new file mode 100644
index 0000000..a76d890
--- /dev/null
+++ b/day19/day19Test.txt
@@ -0,0 +1,12 @@
+0: 4 1 5
+1: 2 3 | 3 2
+2: 4 4 | 5 5
+3: 4 5 | 5 4
+4: "a"
+5: "b"
+
+ababbb
+bababa
+abbbab
+aaabbb
+aaaabbb
\ No newline at end of file