#include <bits/stdc++.h>
#define LL long long
using namespace std;
const int P = 998244353;
inline void upd(int &x,int y){ x = (x+y>=P)?(x+y-P):(x+y); }
map<string,int>F,G;
inline int f(string s);
inline int g(string s);
int main(){ F[""]=G[""]=F["0"]=G["0"]=1; F["1"]=G["1"]=2; string x; cin>>x,cout<<f(x)<<'\n'; return 0; }
inline int f(string s){
	if (F.count(s)) return F[s];
	int sum = 0,n = s.size();
	for (int i = 1; i <= n; ++i) upd(sum,(LL)g(s.substr(0,i)) * f(s.substr(i,n-i)) % P);
	return F[s] = sum; 
}
inline int g(string s){
	if (G.count(s)) return G[s];
	int n = s.size(),i,j,sum = 0; string t;
	for (i = 1; i < n; ++i) if (n % i == 0){
		for (t.resize(i),j = 0; j < i; ++j) t[j] = '1';
		for (j = 0; j < n; ++j) if (s[j] == '0') t[j%i] = '0'; upd(sum,f(t));
	}
	return G[s] = sum;
}