编程题
### 问题描述
在一个寂静的夜晚,侦探基德收到了一封神秘的信件。信件中充满了让人费解的小写英文字母构成的字符串 $s$。基德注意到,这些字符串可能隐藏着某种秘密。他的直觉告诉他,这些字符串可能是某种回文的变形。但是,为了确认他的猜测,基德需要你的帮助。
你的任务是判断每个字符串 $s$ 是否能通过仅删除一个字符,使其变成回文字符串。注意,删除字符后的字符串的大小将比原来少 $1$。
### 输入格式
输入的第一行包含一个整数 $T$,表示测试用例的数量。
接下来的 $T$ 行,每行都包含一个字符串 $s$。
数据保证:
- $1 \leq T \leq 5$。
- $2 \leq |S|\leq 10^5$,$|S|$ 表示字符串 $S$ 的长度。
- 字符串 $s$ 仅包含小写英文字母(即,从 'a' 到 'z')。
### 输出格式
对于每个测试用例,如果可以通过删除一个字符使字符串 $s$ 变成回文字符串,输出 "YES",否则输出 "NO"。
### 样例输入
```plaintext
4
aaa
abc
abdbca
abba
```
### 样例输出
```plaintext
YES
NO
YES
YES
```
### 说明
对于样例 $1$,删除任何一个 'a',结果字符串是 "aa",这是一个回文字符串。
对于样例 $2$,无法通过删除一个字符得到回文字符串。
对于样例 $3$,删除 'c',结果字符串是 "abdba",这是一个回文字符串。
对于样例 $4$,删除 'b',结果字符串是 "aba",这是一个回文字符串。