#include<iostream>
#include <cstring>
#include<set>
#include <vector>
using namespace std;

int randomGen()
{
	rand();
	int random, max_value = 100, min_value = 1;
	random = rand() % max_value + min_value;
	return random;
}

int main(void) {

//ex 2
char str[100];
cin >> str;

int n = strlen(str);
set<char> s;

for(int i = 0; i < n; ++i){
	if(isdigit(str[i])){
		s.insert(str[i]);
	}
}

cout << s.size();

//ex 3
vector<int> myvector (10);
for (int i = 0; i < 10; ++i){
	myvector.at(i) = rand() % 100;
}

for (vector <int>::iterator it = myvector.begin(); it != myvector.end(); ++it){
	cout << ' ' << *it;
}

set <int> d;
for (int i = 0; i < n; ++i){
	for (int j = 0; j < n; ++j){
		d.insert(i*i*i+j*j*j);
	}
}

//for (vecto<int>::iterator it = myvector.begin(); it != myvector.end(); ++it){
//	if (s.find(*iter) != s.end()){
//		cout << s
//	}
//}

cout << endl;

set <int> f;
int F1 = 0;
int F2 = 1;
int F3= 0;

f.insert(F1);

cout << F1 << ' ' << F2 << ' ';
for (int i= 0; i <= 10; ++i){
	F3 = F1+F2;
	
	f.insert(F3);
	cout << F3 << ' ';
	
	F1 = F2;
	F2 = F3;
}

for (vector<int>::iterator it = myvector.begin(); it != myvector.end(); it++){
	if (f.find(*it) != f.end()){
		//myvector.erase(it);
	}
}

for (int i = 0; i < myvector.size(); i++){
	cout << myvector.at(i);
}


return 0;
}