diff --git a/AoC2018/AoC2018.csproj b/AoC2018/AoC2018.csproj
index d7cbc85..40f6b2a 100644
--- a/AoC2018/AoC2018.csproj
+++ b/AoC2018/AoC2018.csproj
@@ -9,6 +9,9 @@
PreserveNewest
+
+ PreserveNewest
+
\ No newline at end of file
diff --git a/AoC2018/Input/Day2Input.txt b/AoC2018/Input/Day2Input.txt
new file mode 100644
index 0000000..c5eb51a
--- /dev/null
+++ b/AoC2018/Input/Day2Input.txt
@@ -0,0 +1,250 @@
+ybruvapdgixszyckwtfqjonsie
+mbruvapxghslyyckwtfqjonsie
+mbruvapdghslzyckwtkujonsie
+rwruvapdghxlzyckwtfqjcnsie
+obruvapdgtxlzyckwtfqionsie
+lbruvapdghxqzyckwtfqjfnsie
+mbrunapdghxlzyccatfqjonsie
+mbruvapdghxlzyokltfqjdnsie
+ybruvapdghxlzmckwtfqjmnsie
+mbruwaadghxdzyckwtfqjonsie
+muruvapdghxlzyckvtfqjonsim
+mbruvapdghxlkyckwtxqjonjie
+mbruvaqdghxlzyckwtfqjrnnie
+mwruvapdghdlzyckttfqjonsie
+mbruvapdgtelzyckwxfqjonsie
+mbruvapdohxlzvckwtfqjonhie
+mbrugapdgbxlzyckwtfqjynsie
+mbruvapdghxlzyckwtlqjonjiu
+mbruvapwghxlzyckwafqjonbie
+wbruvapdghxlhyckwtfqjonsii
+mbruvapdghxlzyckwtcqnonsiq
+mbyuvapighxlzybkwtfqjonsie
+mbrrvapdghxvzyckwtfqjonsio
+mhruvapdghrlzyckwtfzjonsie
+mtruvapvghxlzyckwtfnjonsie
+mmrlhapdghxlzyckwtfqjonsie
+mbruvapdgpxlzyjkwtfqjovsie
+mbrucapdghxlzymkwtzqjonsie
+mbeuvafdghxlzyckwtfqjonwie
+mbruvapcghxlayckwtfqjonsii
+mbruvabdghxlzyckwtfqyansie
+mbruvjpdghxlzyckwtfqgfnsie
+lbruvapdghxlzyckwtfqjonriv
+mbrupapdghxlzycjwtfqronsie
+mbpuvapdthxlzymkwtfqjonsie
+mbiuvapdgixlzyckwxfqjonsie
+mbruvapdghxyzyckwtfcjonsbe
+mbrurapkghxlzyckwtfqjonzie
+mbrufapdrhxlzyciwtfqjonsie
+mbruvapdghxlzbckwtfqjoisae
+ubruhapdghxlzuckwtfqjonsie
+mbruvapdjhulzyckwtfqjonshe
+mbruwapdgyxlzyckntfqjonsie
+mwruvapdghplzyckwtfqjonsme
+mbruvapjghtlzyckwtfqgonsie
+pbruvapdghhlzyckwtfrjonsie
+mbruvgpdihxqzyckwtfqjonsie
+mbruvahdohxlzyckwtfijonsie
+ibuuvapdghxlzyckwtfqjofsie
+mbruvandghxlzyckwtfqjrnxie
+mbrjvlpdghxlzyckwgfqjonsie
+mbruvapogfxlzyckotfqjonsie
+mbruvrpdghxlzyckutfejonsie
+mbruvbpdghxlzyhkwtfqjonsip
+mbruvapdghxlzyckmnfqjensie
+mbruvapdghvlzyckwtfqjowsix
+mbruvakdgholzwckwtfqjonsie
+mbruvapdghxlzackwtfqconsae
+mbruvapdghxlzyqvwtfqjlnsie
+mprrvapdgfxlzyckwtfqjonsie
+mbrunacdghxlhyckwtfqjonsie
+obruvapdgsxlzyckwtfqjonvie
+murcvapdghslzyckwtfqjonsie
+mbruvapdghxlzyzkwmftjonsie
+mbrwvapdgtvlzyckwtfqjonsie
+mbxuvapdghxlzqcnwtfqjonsie
+mbruvaddghxboyckwtfqjonsie
+mhruvwndghxlzyckwtfqjonsie
+mbrdvapdghxlzyckwmpqjonsie
+mbruvapdgyxlzyckizfqjonsie
+mbruvapdghxlzlckwtfqeowsie
+mbruvbpdgrxlzyckwtfqjonsxe
+mbruqapoghxlzyckwtvqjonsie
+mbouhapdghmlzyckwtfqjonsie
+mbruvapjghxidyckwtfqjonsie
+mbsuvapkghxlkyckwtfqjonsie
+mbruvlpdghxlzycrwtfqjonsis
+mcrueapdghxlzyckwtfqjynsie
+muruvapngbxlzyckwtfqjonsie
+mbruvapdghxlzycawtfyjojsie
+mbruvbpdghxczyjkwtfqjonsie
+ybduvapdghxnzyckwtfqjonsie
+mbruvbpdghxlzyckwtfbjousie
+mbouvapdghxlzycbwtfqponsie
+mbruvaedghplzycgwtfqjonsie
+mbrhvapdghxlzyckytfqjgnsie
+mbruvapdqbxleyckwtfqjonsie
+mbruvapddhhldyckwtfqjonsie
+mbruvapdghxlwrckwtfqjondie
+mbruvapdmhxlzyckwtfqkonsve
+xbbuvapdghxlzyckwtfkjonsie
+mbruvapdghxlzyckwcfqjunkie
+mbruvapdghxlzyckwtfqxonfib
+mbrtvapkghxlzyckwtfqeonsie
+mbruvazdghxldymkwtfqjonsie
+kbruvapddhxlzfckwtfqjonsie
+mbouvapdghxlpyckwtfqjoosie
+mbauvapdghxlzyckwtfqjszsie
+mbruvapdghtlzyckntfqtonsie
+mbruvipdggxlzbckwtfqjonsie
+mbruqapdghrlzyckwtfqjznsie
+myruvacdghxlzyckwifqjonsie
+mbruvapdghxlzuckwtfkjocsie
+mwjuvapdghxlzyckwtfqjonsxe
+mbruvapxghxlzickwtfqjobsie
+mbrupapdghxtlyckwtfqjonsie
+meruvapdjjxlzyckwtfqjonsie
+mbruvkodghxlzyckwofqjonsie
+mbruvapdgexlzyckwtgkjonsie
+mbruvapwghxlzyckwtcqjonsiw
+mbruvapdghxlzykkwtfqtoxsie
+mbruvapdahxlzycgwtfwjonsie
+mbruvapdgwxlhyckhtfqjonsie
+mbruvapbghxlzycbhmfqjonsie
+mbruvapdghxvzyzkwtfqjonsin
+mbrcvapdqhxlzyckwyfqjonsie
+zbruvaxdghxlzyckwgfqjonsie
+mtruvapdghxlilckwtfqjonsie
+bbruvapdghxlzyckwtfmjonsxe
+mbruvajdghxlzyckwtfqfwnsie
+mbruvapdgkxlzyckwtfqionpie
+rbruvapdghxlryckwdfqjonsie
+mbruvandghxlzyckwmfvjonsie
+mbruvahdghxlzeckwtfqjonsme
+mbruvnpcghxlzyckwtfqjobsie
+mbruvapdghqlzyckwtfbjonsiy
+mbruvavdghxlzyckwufqjodsie
+mbruvapdghxlzyckwtfzmovsie
+mbruvlpdghxuzyckwtfqjoesie
+mbruvopdghxlzycwwtfqjansie
+obruvapdghglzybkwtfqjonsie
+mbpuvlpdghxlcyckwtfqjonsie
+mbruvaidghxlzyckwtfmjonoie
+mbruvapdihxzzyckwtfqjonsiy
+mbquvapdghxlzyckwtfqconsme
+mbruvapdghslzyckqtfqjojsie
+mbrzdapdghxmzyckwtfqjonsie
+mwruvapdghxozyckwtfqjonsxe
+muruvapdgfxlzyckwtfqjojsie
+wtruvapdghxlzyckvtfqjonsie
+mbruvapdghxlzyckysfqjxnsie
+mbruvrpdghxczyckktfqjonsie
+mbquvapdghxlryckwtfqjonsne
+mbruvapdghflzycvwtfqjpnsie
+mbruvapughclzyckwtfqjonsin
+mbrhvapdghxlpyckwtfqjonsre
+mbruvapdgtxlzyckwtfqjoosit
+mbrupapnghxhzyckwtfqjonsie
+mmvuvapdvhxlzyckwtfqjonsie
+mbruvaptghxlzyckwtfqjotsse
+mgruvapvghxlzyckwtfqjonsix
+mbrupapdghxszyckwtfqjunsie
+mbruvkpdghelzyckwtfqjpnsie
+mbruvrrdghjlzyckwtfqjonsie
+mbruvapdghnlzyckwtfkjonsze
+mbruvwpdghxlzyckwtfqhoysie
+mbrsvapdfhxlzyckwtfqjobsie
+mbruvapdgexezymkwtfqjonsie
+ybruvapdghxlzyckwtfqxonsiw
+mrruvapdghxdzyckwtfqjossie
+mbruvapdghtlzyckwtfqconsiu
+mbrpvapdghxlzlckwpfqjonsie
+mbruvjpdghslzyckwtfqjjnsie
+mhruvapoghxlzyckwtfvjonsie
+mbrubqpdghvlzyckwtfqjonsie
+mbruvapdghxlzackwtfqconsiw
+mbruvapdgnxlzkckwtfqjdnsie
+mbrudapgghelzyckwtfqjonsie
+mbruvapdghxlzlakwbfqjonsie
+mbpuvapdghxlzyckwtuqjonjie
+abruvapdghxlzykkwtfqjonzie
+mbrupupdghxlsyckwtfqjonsie
+mbrsvupdghxlzyckwtfqjonkie
+mxruvgpdghxllyckwtfqjonsie
+mbrnvapdghxlzycbwtfqfonsie
+mbrbxapdghxlzyckttfqjonsie
+mbnuvapdghxlzyxkwtmqjonsie
+mbrfvapdghjlzickwtfqjonsie
+mbhuvupdghxlzyxkwtfqjonsie
+mbrcvapdghxluyckwtfqjznsie
+mbruvapdghxlzyckwofqjoxsiz
+mbrevapdghxloyckwtfqjonnie
+mbruvipdghnlzyckwtfqjopsie
+mbxxvaptghxlzyckwtfqjonsie
+mbruvcpdghxlztckwtjqjonsie
+mqruvlpdghxlzyckotfqjonsie
+mbruvapdgqxlzyckwtfqjpvsie
+mbruvapdgvxlzyjkwtfqjbnsie
+mbruvapdghxlgyckwtfqcocsie
+mbruvapdghxkwyckwtfqjoqsie
+mbrgvavdghxlzyckwxfqjonsie
+qbruqapdgvxlzyckwtfqjonsie
+mbauvapdghxlzgckwtfqjunsie
+mbruvapdgdxluyckwtfqjoosie
+mbruvapdghxlzykkwtfqwobsie
+mbruvapdghxlzhcnwtfqjonqie
+mbruvapdghxlzycbhmfqjonsie
+mbruvapdghxluyczwtfqjontie
+mbruvapnghxlzyckwnfqjonbie
+moruvapdghxlzcckwtfqponsie
+mbruvapfgxxlzyckwtfqjunsie
+mbruvapdghxlryckvtfejonsie
+mbrzvapdghxlzvcbwtfqjonsie
+mbruvapdgqxlzyckwcfqjonsce
+abruvupdrhxlzyckwtfqjonsie
+mbrubaptghxlzyckwtfqjondie
+mgruvapdgpxlzyckwtfijonsie
+mbruvapdghxczlckwtfujonsie
+mbruvapdgmmlzyckwtfqjonsir
+mbruvapdhhxltyckwtfdjonsie
+mbruvapdghxlzyckwtfdjjnste
+mbrdvzpdghxlcyckwtfqjonsie
+mbruvapdghxlzyckwtnqbonsim
+mbrovapdghxlzyckwtfpjousie
+mymuvapdghxlzyjkwtfqjonsie
+mbpuvapdghxlzyckwtfljcnsie
+mbrxvapdghxlzyclwtfqjonpie
+mbrueapdghxlzyckwtfqjopsia
+mbruvapdghxlzycdwtfqjbfsie
+tbruvavdghxlzyckwtmqjonsie
+mbduvapdghxlzyckwrfqjrnsie
+mkrsvapughxlzyckwtfqjonsie
+mbruvapdghylzyckwtfqtolsie
+mgruvapdglxldyckwtfqjonsie
+mbrunapdghclzyckwtfqjonsiy
+mbruvapdgrxlxyckwtfgjonsie
+mbruvapdghxpzbckftfqjonsie
+mbruvcpdghxyzyckotfqjonsie
+mbruvapdghxlsyckwtfqcqnsie
+mbruvapdghxlzzckwtfqjonskf
+mbruvppdghxlzfckwtfqjgnsie
+mbhuvapdghxlzytkwtfqjonoie
+mbruvapdghxlzvrkwtfqjjnsie
+mbmuvapdghxuzyckwtfqjonsze
+mbruvapdghnlzycnwtfqjonsil
+mbruvapdgholzyckitfqjonsia
+mbruxapdghxlmyckwtfqbonsie
+mbauvapdgholzyckwtfqjolsie
+mbruvapdghxlzyckwtfqjotslq
+dbrutapdghxlzyckwtfqjonsiv
+mbruvapdzhxlyyckwtfbjonsie
+mmruaapsghxlzyckwtfqjonsie
+mbruvaldgqxqzyckwtfqjonsie
+mbruvaodghxdzyjkwtfqjonsie
+mbrcmatdghxlzyckwtfqjonsie
+mbrqvapdgtxlzycewtfqjonsie
+mjruvapdghzlzyckwtfqjonrie
+mbruvapdghxopcckwtfqjonsie
+mbruvapdghxszycwwtfqjoqsie
+mbruvapdgoxezyckwtjqjonsie
\ No newline at end of file
diff --git a/AoC2018/Solutions/Day2Solution.cs b/AoC2018/Solutions/Day2Solution.cs
new file mode 100644
index 0000000..15395be
--- /dev/null
+++ b/AoC2018/Solutions/Day2Solution.cs
@@ -0,0 +1,74 @@
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Linq;
+
+namespace AoC2018.Solutions
+{
+ public class Day2Solution: Solution
+ {
+ public override string Title => "Inventory Management System";
+
+ public override int Day => 2;
+
+ public override void Run()
+ {
+ string[] input = File.ReadAllLines(Path.Combine("Input", "Day2Input.txt"));
+
+ Console.WriteLine($"Part 1: {CalculatePart1(input)}");
+ Console.WriteLine($"Part 2: {CalculatePart2(input)}");
+ }
+
+ private int CalculatePart1(string[] input)
+ {
+ int value1 = 0, value2 = 0;
+
+ foreach (var s in input)
+ {
+ bool two = false, three = false;
+
+ var result = s.GroupBy(c => c).Select(c => new { Char = c.Key, Count = c.Count() });
+ foreach (var x in result)
+ {
+ if (x.Count == 2)
+ two = true;
+ else if (x.Count == 3)
+ three = true;
+ }
+
+ if (two) value1++;
+ if (three) value2++;
+ }
+
+ return value1 * value2;
+ }
+
+ private string CalculatePart2(string[] input)
+ {
+ string result = string.Empty;
+
+ for (int i = 0; i < input.Length; i++)
+ {
+ for (int j = 0; j < input.Length; j++)
+ {
+ var commonChars = CommonChars(input[i], input[j]).ToArray();
+ if (Math.Abs(input[j].Length - commonChars.Length) == 1)
+ return new string(commonChars);
+ }
+ }
+
+ return result;
+ }
+
+ private List CommonChars(string left, string right)
+ {
+ List identicalList = new List(left.Length);
+
+ for(int i = 0; i < left.Length; i++)
+ if (left[i] == right[i])
+ identicalList.Add(left[i]);
+
+ return identicalList;
+ }
+ }
+}