diff --git a/day5/day5.py b/day5/day5.py
new file mode 100644
index 0000000000000000000000000000000000000000..4d06735cc6db47e3c66325a28f67bccaa68ece75
--- /dev/null
+++ b/day5/day5.py
@@ -0,0 +1,42 @@
+# Day 5 - Part 1 + 2
+def print_top_crates(task):
+    stacks_str, procedure = open("input.dat").read().split('\n\n')
+    # get max number of stacks
+    stack_number = int(stacks_str[stacks_str.rfind(' '):])
+    # remove stack numbers (indirectly saved via column index)
+    stacks_str = stacks_str[:stacks_str.rfind('\n')]
+    # initialize number of stacks with empty lists in a list
+    stacks = []
+    for i in range(stack_number):
+        stacks.append([])
+    # remove unnecessary characters + replace spaces with "," and \n with ";"
+    data = list(x.split(';') for x in stacks_str.replace('    ', ';').replace(' ', ';').split('\n'))
+    # add items to right stacks
+    for row in data:
+        for stack, item in enumerate(row):
+            if item:
+                stacks[stack].append(item)
+
+    # convert procedure string to list(list(int), list(int), ...)
+    procedure = procedure.replace("move ", "").replace(" from ", ",").replace(" to ", ",").replace("\n", ";")
+    procedure_list = list(x.split(",") for x in procedure.split(";"))
+    procedure_int_list = []
+    for row in procedure_list:
+        procedure_int_list.append([int(i) for i in row])
+
+    # execute stack procedure
+    if task == "part1":
+        for items, src, dst in procedure_int_list:
+            for i in range(items):
+                stacks[dst-1].insert(0, stacks[src-1].pop(0))
+    elif task == "part2":
+        for items, src, dst in procedure_int_list:
+            for i in reversed(range(items)):
+                stacks[dst - 1].insert(0, stacks[src - 1].pop(i))
+
+    # print top items of each stack
+    print("".join(x[0][1] for x in stacks))
+
+
+if __name__ == '__main__':
+    print_top_crates("part1")
diff --git a/day5/input.dat b/day5/input.dat
new file mode 100644
index 0000000000000000000000000000000000000000..c802d106e1f6bac8290661873339566b18c3725e
--- /dev/null
+++ b/day5/input.dat
@@ -0,0 +1,512 @@
+            [M] [S] [S]
+        [M] [N] [L] [T] [Q]
+[G]     [P] [C] [F] [G] [T]
+[B]     [J] [D] [P] [V] [F] [F]
+[D]     [D] [G] [C] [Z] [H] [B] [G]
+[C] [G] [Q] [L] [N] [D] [M] [D] [Q]
+[P] [V] [S] [S] [B] [B] [Z] [M] [C]
+[R] [H] [N] [P] [J] [Q] [B] [C] [F]
+ 1   2   3   4   5   6   7   8   9
+
+move 1 from 7 to 4
+move 3 from 4 to 7
+move 4 from 3 to 4
+move 5 from 6 to 9
+move 1 from 8 to 1
+move 2 from 3 to 2
+move 3 from 4 to 6
+move 1 from 3 to 6
+move 9 from 7 to 1
+move 1 from 2 to 4
+move 3 from 4 to 9
+move 4 from 9 to 8
+move 6 from 8 to 2
+move 1 from 8 to 6
+move 1 from 4 to 1
+move 11 from 1 to 7
+move 1 from 4 to 7
+move 7 from 2 to 5
+move 5 from 6 to 3
+move 2 from 4 to 3
+move 2 from 5 to 9
+move 1 from 8 to 6
+move 3 from 1 to 5
+move 2 from 6 to 9
+move 1 from 4 to 8
+move 2 from 2 to 1
+move 7 from 5 to 9
+move 6 from 3 to 6
+move 1 from 2 to 5
+move 1 from 3 to 8
+move 12 from 7 to 3
+move 1 from 1 to 8
+move 2 from 1 to 9
+move 20 from 9 to 5
+move 1 from 1 to 7
+move 5 from 5 to 3
+move 1 from 8 to 7
+move 2 from 8 to 3
+move 2 from 6 to 5
+move 1 from 6 to 4
+move 18 from 3 to 2
+move 1 from 4 to 2
+move 1 from 7 to 9
+move 1 from 1 to 9
+move 1 from 6 to 1
+move 8 from 5 to 2
+move 1 from 1 to 6
+move 19 from 5 to 2
+move 5 from 2 to 6
+move 2 from 9 to 7
+move 20 from 2 to 1
+move 1 from 9 to 4
+move 8 from 6 to 2
+move 5 from 1 to 3
+move 27 from 2 to 1
+move 34 from 1 to 7
+move 1 from 2 to 6
+move 2 from 3 to 1
+move 1 from 4 to 9
+move 1 from 2 to 6
+move 2 from 1 to 7
+move 1 from 6 to 7
+move 1 from 9 to 3
+move 2 from 6 to 3
+move 1 from 6 to 4
+move 5 from 3 to 4
+move 5 from 4 to 2
+move 4 from 1 to 4
+move 4 from 1 to 4
+move 2 from 3 to 6
+move 1 from 6 to 9
+move 25 from 7 to 5
+move 1 from 6 to 4
+move 17 from 5 to 2
+move 14 from 7 to 6
+move 1 from 7 to 3
+move 1 from 9 to 3
+move 10 from 2 to 3
+move 2 from 2 to 9
+move 12 from 3 to 5
+move 18 from 5 to 8
+move 1 from 4 to 2
+move 5 from 2 to 1
+move 1 from 5 to 3
+move 3 from 2 to 1
+move 1 from 2 to 7
+move 2 from 2 to 6
+move 9 from 6 to 7
+move 16 from 8 to 2
+move 6 from 7 to 3
+move 2 from 8 to 9
+move 1 from 1 to 8
+move 16 from 2 to 6
+move 1 from 8 to 3
+move 2 from 1 to 2
+move 1 from 9 to 3
+move 7 from 4 to 1
+move 7 from 3 to 7
+move 9 from 7 to 8
+move 1 from 5 to 6
+move 2 from 9 to 7
+move 1 from 9 to 5
+move 11 from 6 to 8
+move 1 from 3 to 1
+move 1 from 4 to 2
+move 2 from 8 to 5
+move 3 from 5 to 8
+move 2 from 1 to 9
+move 5 from 1 to 4
+move 3 from 4 to 1
+move 1 from 3 to 2
+move 3 from 2 to 1
+move 1 from 9 to 1
+move 1 from 2 to 5
+move 2 from 4 to 7
+move 20 from 8 to 5
+move 1 from 9 to 7
+move 11 from 6 to 1
+move 17 from 1 to 5
+move 1 from 8 to 2
+move 7 from 5 to 8
+move 1 from 4 to 5
+move 2 from 1 to 2
+move 2 from 8 to 4
+move 4 from 7 to 6
+move 2 from 6 to 8
+move 2 from 1 to 2
+move 1 from 1 to 4
+move 4 from 8 to 9
+move 2 from 1 to 9
+move 3 from 8 to 1
+move 25 from 5 to 2
+move 23 from 2 to 1
+move 1 from 7 to 1
+move 6 from 9 to 8
+move 6 from 8 to 3
+move 3 from 6 to 2
+move 10 from 1 to 2
+move 1 from 6 to 3
+move 2 from 3 to 6
+move 2 from 3 to 2
+move 2 from 6 to 8
+move 1 from 4 to 6
+move 14 from 1 to 9
+move 2 from 3 to 4
+move 14 from 2 to 4
+move 1 from 6 to 9
+move 17 from 4 to 3
+move 1 from 8 to 6
+move 2 from 7 to 2
+move 1 from 4 to 2
+move 1 from 5 to 9
+move 9 from 2 to 4
+move 17 from 3 to 7
+move 3 from 4 to 2
+move 1 from 8 to 3
+move 4 from 5 to 7
+move 1 from 3 to 6
+move 1 from 4 to 5
+move 14 from 7 to 9
+move 2 from 1 to 9
+move 3 from 2 to 1
+move 1 from 2 to 5
+move 1 from 3 to 7
+move 4 from 1 to 2
+move 2 from 6 to 7
+move 3 from 9 to 8
+move 4 from 2 to 4
+move 17 from 9 to 7
+move 1 from 2 to 8
+move 8 from 9 to 6
+move 1 from 8 to 2
+move 19 from 7 to 9
+move 9 from 4 to 2
+move 5 from 7 to 3
+move 3 from 5 to 9
+move 6 from 2 to 5
+move 1 from 9 to 4
+move 3 from 2 to 9
+move 25 from 9 to 5
+move 1 from 3 to 6
+move 2 from 5 to 8
+move 6 from 6 to 7
+move 1 from 3 to 4
+move 2 from 3 to 4
+move 1 from 8 to 2
+move 2 from 2 to 9
+move 2 from 8 to 3
+move 5 from 7 to 6
+move 3 from 7 to 9
+move 7 from 5 to 8
+move 2 from 3 to 5
+move 1 from 3 to 5
+move 1 from 6 to 2
+move 6 from 9 to 5
+move 1 from 9 to 2
+move 1 from 6 to 9
+move 2 from 5 to 6
+move 2 from 9 to 8
+move 11 from 8 to 1
+move 2 from 5 to 9
+move 3 from 6 to 5
+move 1 from 4 to 7
+move 5 from 5 to 7
+move 1 from 4 to 8
+move 7 from 7 to 2
+move 12 from 5 to 2
+move 10 from 1 to 8
+move 1 from 9 to 6
+move 3 from 8 to 1
+move 1 from 1 to 6
+move 10 from 2 to 3
+move 8 from 8 to 7
+move 1 from 9 to 8
+move 2 from 3 to 5
+move 14 from 5 to 8
+move 1 from 3 to 2
+move 3 from 8 to 1
+move 3 from 8 to 4
+move 3 from 2 to 4
+move 5 from 6 to 4
+move 8 from 7 to 9
+move 6 from 8 to 7
+move 1 from 5 to 7
+move 6 from 2 to 9
+move 4 from 4 to 6
+move 4 from 4 to 9
+move 3 from 9 to 3
+move 1 from 8 to 6
+move 1 from 5 to 6
+move 2 from 7 to 2
+move 1 from 3 to 4
+move 3 from 4 to 1
+move 3 from 4 to 3
+move 5 from 6 to 4
+move 4 from 3 to 8
+move 1 from 6 to 4
+move 8 from 3 to 2
+move 2 from 8 to 5
+move 11 from 9 to 7
+move 9 from 1 to 9
+move 2 from 7 to 3
+move 1 from 6 to 8
+move 1 from 6 to 5
+move 5 from 9 to 8
+move 3 from 9 to 7
+move 2 from 9 to 1
+move 2 from 3 to 7
+move 12 from 7 to 1
+move 2 from 8 to 9
+move 5 from 4 to 5
+move 4 from 9 to 4
+move 1 from 1 to 3
+move 7 from 1 to 3
+move 7 from 5 to 6
+move 1 from 9 to 1
+move 1 from 5 to 1
+move 5 from 7 to 8
+move 4 from 6 to 7
+move 5 from 1 to 8
+move 1 from 4 to 3
+move 12 from 8 to 7
+move 2 from 2 to 4
+move 2 from 8 to 9
+move 3 from 8 to 2
+move 2 from 6 to 7
+move 4 from 7 to 8
+move 1 from 6 to 8
+move 4 from 3 to 2
+move 15 from 7 to 8
+move 1 from 7 to 6
+move 3 from 3 to 5
+move 2 from 3 to 4
+move 5 from 2 to 5
+move 3 from 1 to 5
+move 4 from 5 to 6
+move 4 from 5 to 9
+move 1 from 5 to 7
+move 4 from 9 to 4
+move 2 from 2 to 9
+move 2 from 5 to 2
+move 2 from 2 to 1
+move 3 from 4 to 9
+move 2 from 9 to 4
+move 2 from 8 to 5
+move 2 from 5 to 2
+move 8 from 2 to 4
+move 2 from 1 to 3
+move 2 from 3 to 5
+move 3 from 6 to 9
+move 2 from 6 to 1
+move 2 from 1 to 4
+move 1 from 2 to 4
+move 1 from 5 to 7
+move 2 from 2 to 7
+move 18 from 4 to 2
+move 1 from 5 to 9
+move 2 from 7 to 9
+move 18 from 8 to 4
+move 1 from 7 to 8
+move 22 from 4 to 8
+move 6 from 2 to 6
+move 3 from 6 to 8
+move 3 from 6 to 4
+move 3 from 4 to 7
+move 3 from 7 to 1
+move 14 from 2 to 3
+move 10 from 3 to 2
+move 27 from 8 to 1
+move 1 from 7 to 6
+move 1 from 3 to 7
+move 2 from 2 to 8
+move 2 from 9 to 8
+move 18 from 1 to 4
+move 6 from 1 to 5
+move 10 from 4 to 7
+move 1 from 3 to 7
+move 4 from 7 to 2
+move 3 from 9 to 7
+move 1 from 6 to 5
+move 1 from 2 to 7
+move 2 from 5 to 6
+move 2 from 6 to 5
+move 3 from 5 to 1
+move 6 from 1 to 3
+move 4 from 5 to 9
+move 11 from 2 to 9
+move 2 from 1 to 6
+move 3 from 4 to 6
+move 5 from 7 to 3
+move 2 from 6 to 1
+move 2 from 1 to 5
+move 1 from 8 to 2
+move 1 from 1 to 8
+move 1 from 6 to 4
+move 2 from 4 to 5
+move 4 from 5 to 9
+move 11 from 3 to 6
+move 1 from 3 to 6
+move 8 from 6 to 5
+move 1 from 3 to 5
+move 4 from 4 to 8
+move 21 from 9 to 6
+move 2 from 9 to 5
+move 1 from 9 to 3
+move 1 from 2 to 6
+move 7 from 8 to 6
+move 12 from 6 to 5
+move 1 from 8 to 2
+move 10 from 6 to 7
+move 15 from 7 to 2
+move 2 from 7 to 3
+move 13 from 6 to 8
+move 9 from 5 to 1
+move 12 from 5 to 3
+move 1 from 2 to 3
+move 1 from 9 to 7
+move 9 from 3 to 4
+move 3 from 4 to 6
+move 1 from 7 to 6
+move 6 from 4 to 1
+move 2 from 5 to 2
+move 6 from 1 to 8
+move 9 from 8 to 6
+move 7 from 3 to 2
+move 1 from 2 to 9
+move 9 from 6 to 1
+move 13 from 1 to 7
+move 4 from 8 to 5
+move 2 from 7 to 1
+move 3 from 6 to 4
+move 3 from 5 to 8
+move 3 from 2 to 6
+move 1 from 5 to 3
+move 1 from 3 to 4
+move 1 from 9 to 8
+move 3 from 8 to 7
+move 12 from 2 to 9
+move 10 from 7 to 4
+move 5 from 8 to 4
+move 1 from 8 to 5
+move 11 from 4 to 7
+move 8 from 9 to 7
+move 1 from 6 to 2
+move 8 from 2 to 6
+move 1 from 5 to 8
+move 4 from 1 to 5
+move 4 from 9 to 6
+move 3 from 1 to 3
+move 2 from 8 to 4
+move 1 from 7 to 6
+move 1 from 2 to 7
+move 2 from 3 to 7
+move 4 from 4 to 9
+move 11 from 6 to 9
+move 10 from 7 to 8
+move 1 from 3 to 4
+move 1 from 6 to 4
+move 4 from 5 to 7
+move 6 from 7 to 4
+move 1 from 8 to 7
+move 4 from 6 to 7
+move 12 from 4 to 8
+move 12 from 8 to 1
+move 1 from 8 to 2
+move 10 from 1 to 7
+move 2 from 4 to 1
+move 8 from 8 to 3
+move 4 from 1 to 6
+move 8 from 7 to 6
+move 2 from 6 to 5
+move 2 from 5 to 2
+move 13 from 9 to 3
+move 3 from 2 to 5
+move 8 from 3 to 4
+move 7 from 6 to 7
+move 1 from 9 to 2
+move 1 from 9 to 1
+move 2 from 6 to 4
+move 3 from 4 to 8
+move 1 from 1 to 7
+move 4 from 4 to 6
+move 3 from 8 to 7
+move 1 from 2 to 9
+move 1 from 5 to 2
+move 1 from 2 to 5
+move 2 from 4 to 5
+move 1 from 7 to 2
+move 13 from 3 to 4
+move 7 from 4 to 3
+move 4 from 5 to 9
+move 1 from 4 to 7
+move 5 from 6 to 3
+move 3 from 9 to 7
+move 10 from 7 to 8
+move 3 from 4 to 8
+move 1 from 5 to 4
+move 2 from 3 to 1
+move 3 from 7 to 4
+move 4 from 8 to 6
+move 2 from 9 to 3
+move 2 from 4 to 5
+move 4 from 4 to 3
+move 8 from 8 to 3
+move 3 from 6 to 8
+move 1 from 2 to 6
+move 5 from 7 to 9
+move 1 from 4 to 3
+move 3 from 7 to 5
+move 3 from 8 to 4
+move 7 from 7 to 5
+move 3 from 7 to 8
+move 1 from 9 to 8
+move 3 from 4 to 1
+move 1 from 5 to 8
+move 3 from 7 to 1
+move 6 from 8 to 3
+move 3 from 9 to 5
+move 2 from 6 to 5
+move 2 from 1 to 6
+move 16 from 3 to 8
+move 4 from 5 to 8
+move 4 from 3 to 8
+move 1 from 9 to 5
+move 1 from 6 to 5
+move 3 from 3 to 7
+move 6 from 1 to 6
+move 1 from 5 to 4
+move 3 from 5 to 2
+move 2 from 7 to 4
+move 1 from 2 to 8
+move 6 from 8 to 1
+move 2 from 4 to 5
+move 2 from 2 to 3
+move 7 from 8 to 7
+move 1 from 4 to 6
+move 3 from 6 to 4
+move 3 from 4 to 9
+move 3 from 6 to 3
+move 11 from 8 to 6
+move 12 from 5 to 4
+move 5 from 6 to 1
+move 9 from 3 to 2
+move 7 from 6 to 1
+move 7 from 7 to 8
+move 5 from 8 to 3
+move 2 from 3 to 6
+move 2 from 8 to 1
+move 1 from 7 to 2
+move 7 from 3 to 8
+move 1 from 9 to 1
+move 14 from 1 to 3
+move 9 from 2 to 8
+move 11 from 3 to 4
+move 22 from 4 to 1
+move 2 from 3 to 1
+move 16 from 8 to 4
+move 1 from 9 to 2
+move 3 from 6 to 9
+move 3 from 9 to 5
+move 1 from 2 to 6
+move 1 from 5 to 7
\ No newline at end of file