private static int CalculateScoreAfterRemovingAWord(CrozzlePartial cp, Word removeWord) { int score = cp.GetScore(); // reverse the process of adding a word score -= PublicInfo.GetPointsPerWord(); for (int i = 0; i < cp.GetUsedWord().Count; i++) { if (!cp.GetUsedWord()[i].GetType().Equals(removeWord.GetType()) && CrozzleValidation.Crossing(cp.GetUsedWord()[i], removeWord)) { char crossingLetter = CrozzleValidation.GetCrossingLetter(cp.GetUsedWord()[i], removeWord); score -= WordInfo.intersectingPointsPerLetter[crossingLetter]; score += WordInfo.nonIntersectingPointsPerLetter[crossingLetter]; } } return(score); }