#include <iostream>
#include <cstring>
#include <algorithm>
#include <climits>
using namespace std;
const int MAX = 200;
int f[MAX][MAX]; // mảng lưu kết quả quy hoạch động
string s;
int n;
// Hàm quy hoạch động tính số bước chèn tối thiểu
int qhd(int l, int r) {
if (l >= r) return 0; // Nếu chỉ còn 1 ký tự hoặc không còn ký tự
if (f[l][r] != -1) return f[l][r]; // Nếu đã tính trước đó
if (s[l] == s[r]) {
// Nếu ký tự ở đầu và cuối giống nhau, không cần thêm bước
f[l][r] = qhd(l + 1, r - 1);
} else {
// Nếu không giống, ta cần thêm 1 bước chèn và chọn cách tốt nhất
f[l][r] = min(qhd(l + 1, r) + 1, qhd(l, r - 1) + 1);
}
return f[l][r];
}
int main() {
cin >> s; // Đọc xâu đầu vào
n = s.length();
memset(f, -1, sizeof(f)); // Khởi tạo mảng f với giá trị -1
// In ra kết quả là số bước chèn tối thiểu để biến xâu thành palindrome
cout << qhd(0, n - 1) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3N0cmluZz4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNsaW1pdHM+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY29uc3QgaW50IE1BWCA9IDIwMDsKaW50IGZbTUFYXVtNQVhdOyAvLyBt4bqjbmcgbMawdSBr4bq/dCBxdeG6oyBxdXkgaG/huqFjaCDEkeG7mW5nCnN0cmluZyBzOwppbnQgbjsKCi8vIEjDoG0gcXV5IGhv4bqhY2ggxJHhu5luZyB0w61uaCBz4buRIGLGsOG7m2MgY2jDqG4gdOG7kWkgdGhp4buDdQppbnQgcWhkKGludCBsLCBpbnQgcikgewogICAgaWYgKGwgPj0gcikgcmV0dXJuIDA7ICAvLyBO4bq/dSBjaOG7iSBjw7JuIDEga8O9IHThu7EgaG/hurdjIGtow7RuZyBjw7JuIGvDvSB04buxCiAgICBpZiAoZltsXVtyXSAhPSAtMSkgcmV0dXJuIGZbbF1bcl07ICAvLyBO4bq/dSDEkcOjIHTDrW5oIHRyxrDhu5tjIMSRw7MKICAgIAogICAgaWYgKHNbbF0gPT0gc1tyXSkgewogICAgICAgIC8vIE7hur91IGvDvSB04buxIOG7nyDEkeG6p3UgdsOgIGN14buRaSBnaeG7kW5nIG5oYXUsIGtow7RuZyBj4bqnbiB0aMOqbSBixrDhu5tjCiAgICAgICAgZltsXVtyXSA9IHFoZChsICsgMSwgciAtIDEpOwogICAgfSBlbHNlIHsKICAgICAgICAvLyBO4bq/dSBraMO0bmcgZ2nhu5FuZywgdGEgY+G6p24gdGjDqm0gMSBixrDhu5tjIGNow6huIHbDoCBjaOG7jW4gY8OhY2ggdOG7kXQgbmjhuqV0CiAgICAgICAgZltsXVtyXSA9IG1pbihxaGQobCArIDEsIHIpICsgMSwgcWhkKGwsIHIgLSAxKSArIDEpOwogICAgfQogICAgCiAgICByZXR1cm4gZltsXVtyXTsKfQoKaW50IG1haW4oKSB7CiAgICBjaW4gPj4gczsgIC8vIMSQ4buNYyB4w6J1IMSR4bqndSB2w6BvCiAgICBuID0gcy5sZW5ndGgoKTsKICAgIAogICAgbWVtc2V0KGYsIC0xLCBzaXplb2YoZikpOyAgLy8gS2jhu59pIHThuqFvIG3huqNuZyBmIHbhu5tpIGdpw6EgdHLhu4sgLTEKICAgIAogICAgLy8gSW4gcmEga+G6v3QgcXXhuqMgbMOgIHPhu5EgYsaw4bubYyBjaMOobiB04buRaSB0aGnhu4N1IMSR4buDIGJp4bq/biB4w6J1IHRow6BuaCBwYWxpbmRyb21lCiAgICBjb3V0IDw8IHFoZCgwLCBuIC0gMSkgPDwgZW5kbDsKCiAgICByZXR1cm4gMDsKfQo=