C# straightforward solution 76ms
\npublic class Solution {\n    public string ModifyString(string s) {\n        char[] letters = new char[]{\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\'
```\npublic class Solution {\n    public string ModifyString(string s) {\n        char[] letters = new char[]{\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\n                                    \'j\',\'k\',\'l\',\'m\',\'n\',\'o\',\'p\',\'q\',\'r\',\n                                    \'s\',\'t\',\'u\',\'v\',\'w\',\'x\',\'y\',\'z\'};\n        char[] ans = s.ToCharArray();\n        for(int i=0; i<ans.Length; i++)\n        {\n            if(ans[i] != \'?\') continue;\n            \n            char[] sides = new char[2];\n            if(i != 0) sides[0] = ans[i-1];\n            if(i != ans.Length-1)sides[1] = ans[i+1];\n            ans[i] = letters.Where(o => !sides.Contains(o)).FirstOrDefault();\n        }\n        return new string(ans);\n    }\n}\n```
[]