#include <iostream>
#include <vector>
#include <string>
#include <unordered_map>
using namespace std;

int main()
{
	string n; getline(cin, n);
	vector<int> brojevi;
	int trenutni = 0;
	unordered_map<int, int> preslikavanja;
	for (int i = 0; i < n.size(); i++)
	{
		if (preslikavanja.find(n[i] - '0') == preslikavanja.end()) 
		{
			preslikavanja[n[i] - '0'] = trenutni;
			trenutni++;
		}
		brojevi.push_back(preslikavanja[n[i] - '0']);
	}

	vector<int> prosli_red;
	for (int i = 0; i < n.size(); i++)
	{
		vector<int> trenutni_red;
		for (int j = 0; j < preslikavanja.size(); j++)
		{
			if (i == 0) 
			{
				if (j == 0)
					trenutni_red.push_back(0);
				else
					trenutni_red.push_back(1);
			}
			else 
			{
				if (j == 0)
					trenutni_red.push_back(prosli_red[j]);
				else
					trenutni_red.push_back(min(prosli_red[j], prosli_red[j - 1]));
				if (brojevi[i] != j)
					trenutni_red[j]++;
			}
		}
		prosli_red = trenutni_red;
	}

	int min_res = INT32_MAX;
	for (int broj: prosli_red)
		if (broj < min_res)
			min_res = broj;

	cout << min_res;
}