public IEnumerable <IGrouping <int, string> > Get(string letters) { var dictionaryWords = dictionaryReader.Read(); return(dictionaryWords .AsParallel() .Where(dictionaryWord => dictionaryWord.Length >= settings.MinimumCharacters && dictionaryWord.CanBeMadeFrom2(letters)) .OrderBy(x => x) .GroupBy(x => x.Length) .OrderBy(x => x.Key)); }