public static RubikPosition getCommonLayer(RubikPosition a, RubikPosition b, RubikPosition exclude) { for (int i = 0; i < 9; i++) { RubikPosition l = (Cube3D.RubikPosition)Math.Pow(2, i); if (a.HasFlag(l) && b.HasFlag(l) && l != exclude) { return(l); } } return(RubikPosition.None); }