شکلات فروشی


  • محدودیت زمان: ۱ ثانیه
  • محدودیت حافظه: ۲۵۶ مگابایت

هنرمند وسواسی لکه‌ای روی دیوار اتاقش پیدا کرده‌است. این لکه به صورت یک رشته به طول nn از حروف کوچک انگلیسی است. هنرمند که خیلی وسواسی است، می‌خواهد هر چه زودتر لکه را پاک کند. او به خاطر وسواس زیادش فقط یکی از دو عملیات زیر را برای پاک کردن انجام می‌دهد:

  • یک حرف از این رشته را به یک حرف انگلیسی دیگر تغییر دهد.
  • یک زیررشته‌ی متوالی پالیندروم از این رشته را انتخاب کند و آن را حذف کند. منظور از یک رشته‌ی پالیندروم، رشته‌ای است که از هر دو طرف به یک شکل خوانده شود. توجه کنید که با حذف کردن یک زیررشته، دو طرف آن زیررشته به هم می‌چسبند.

برای مثال اگر رشته نمایانگر لکه‌ی aabcx باشد، هنرمند می‌تواند زیررشته‌ی aa را حذف کند چون پالیندروم است و سپس کاراکتر آخر را به b تغییر دهد تا رشته تبدیل به bcb شود. سپس در یک مرحله‌ی دیگر می‌تواند این رشته‌ی پالیندروم را حذف کند.

متاسفانه هنرمند با دیدن لکه بیش از حد وسواسی شده و از شما می‌خواهد با گرفتن رشته‌ی نمایانگر لکه، حداقل تعداد عملیات برای پاک کردن آن را حساب کنید.

ورودی🔗

در تنها خط ورودی رشته‌ی SS از حروف کوچک انگلیسی که نمایانگر لکه است، به شما ورودی داده می‌شود.

1S5001 \leq |S| \leq 500

خروجی🔗

در تنها خط خروجی حداقل تعداد عملیات لازم برای پاک کردن لکه را چاپ کنید.

مثال‌ها🔗

ورودی نمونه ۱🔗

abcba
Plain text

خروجی نمونه ۱🔗

1
Plain text

در مثال بالا رشته از همان ابتدا پالیندروم است و در یک مرحله می‌توان آن را پاک کرد.

ورودی نمونه ۲🔗

abcbx
Plain text

خروجی نمونه ۲🔗

2
Plain text

در مثال بالا در حرکت اول می‌توان حرف آخر را تبدیل به a کرد و سپس در حرکت دوم رشته‌ی پالیندروم به دست آمده را حذف کرد.

ورودی نمونه ۳🔗

aabcx
Plain text

خروجی نمونه ۳🔗

3
Plain text