#include<bits/stdc++.h>
using namespace std;
string s;
int mod = 998244353;
map < string , int > f;
map < string , int > g;
int F( string s );
int G( string s ){
	if ( g.find( s ) != g.end() )
    	return g[s];
    if ( s.size() == 1 )
    	return g[s] = 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' );
            }
            g[s] = ( g[s] + F( t ) ) % mod;
        }
    }
    return g[s];
}
int F( string s ){
	if ( f.find( s ) != f.end() )
    	return f[s];
    for ( int i = 1 ; i <= s.size() ; ++i )
    f[s] = ( f[s] + 1ll * F( s.substr( 0 , s.size() - i ) ) * G( s.substr( s.size() - i , i ) ) %mod ) % mod;
    return f[s];
}
int main(){
	cin >> s;
	f[""] = 1;
	cout << F( s ) << endl;
	return 0;
}