#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
const int MOD = 998244353;

map<string, int> g, f;

int F(string s);
int G(string s);

int main()
{
	f[""] = 1;
	string s;
	cin >> s;
	cout << F(s) << endl;
	return 0;
}

int F(string s)
{
	if(f.find(s) != f.end()) return f[s];
	int& ans = f[s];
	for(int i = 1; i <= s.size(); ++i)
		(ans += (ll)F(s.substr(0, s.size() - i)) * G(s.substr(s.size() - i, i)) % MOD) %= MOD;
	return ans;
}

int G(string s)
{
	if(g.find(s) != g.end()) return g[s];
	int& ans = g[s];
	if(s.size() == 1) return ans = s[0] - '0' + 1;
	for(int i = 1; i < s.size(); ++i)
		if(s.size() % i == 0)
		{
			string t;
			for(int j = 0; j < i; ++j)
			{
				int r = 1;
				for(int k = 0; k < s.size() / i; ++k)
					if(s[i * k + j] == '0') r = 0;
				t += (char)(r + '0');
			}
			(ans += F(t)) %= MOD;
		}
	return ans;
}