#include<bits/stdc++.h>
#define I __int128
#define L long long
using namespace std;
const int q=998244353;
I n,x[110];
map<I,int> f;
char s[110];
inline int dp(I n,int w)
{
    if(f[n])
      return f[n];
    int i,j,k=dp(n>>1,w-1);
    if(n&1)
      k=k*2%q;
    for(i=1;i*2<=w;i++)
      {
       I m=n,l=n&x[i];
       m>>=i;
       for(j=2;i*j<=w;j++)
         {
          l&=m&x[i];
          m>>=i;
          l|=(I)1<<i;
          k=(k+(L)dp(l,i)*dp(m,w-i*j))%q;
         }
      }
    f[n]=k;
    return k;
}
int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	int i;
	x[1]=1;
	for(i=2;i<=100;i++)
	  x[i]=x[i-1]*2+1;
	scanf("%s",&s);
	for(i=0,n=1;i<strlen(s);i++)
	  n=n*2+s[i]-'0';
	f[1]=1;
	printf("%d\n",dp(n,strlen(s)));
	return 0;
}
