#include <map>
#include <cstdio>
#include <string>
#include <iostream>
typedef long long ll;

const int p=998244353;
std::map<std::string,int> f,g;

int F(std::string s);

int G(std::string s)
{
    if(g.count(s))return g[s];
    int &Res=g[s];
    if(s.size()==1)return Res=(s[0]^48)+1;
    for(int i=1;i<(int)s.size();++i)
        if((int)s.size()%i==0)
        {
            std::string t;
            for(int j=0;j<i;++j)
            {
                int r=1;
                for(int k=0;k<(int)s.size()/i;++k)
                    if(s[k*i+j]=='0')r=0;
                t+=(char)(r^48);
            }
            Res=(Res+F(t))%p;
        }
    return Res;
}

int F(std::string s)
{
    if(f.count(s))return f[s];
    int &Res=f[s];
    for(int i=1;i<=(int)s.size();++i)
        Res=(Res+(ll)F(s.substr(0,(int)s.size()-i))*G(s.substr((int)s.size()-i,i)))%p;
    return Res;
}

int main()
{
    std::ios::sync_with_stdio(false),std::cin.tie(0),std::cout.tie(0);
    std::string s;
    std::cin>>s,f[""]=1,std::cout<<F(s)<<std::endl;
    return 0;
}