#include <stdio.h>
#include <string.h>
#include <stdlib.h>

void stack(char parts[],int n){
	char *temp;
	int i=0;
	temp = (char *)calloc(n+1,sizeof(char));temp[n+1]='0';
	strcpy(temp,parts);
	while(n-i != -1){
		parts[i]=temp[n-i-1];
		i++;
	}
}
void assemble(char line[],char finish[],int pattern,int start,int len){
	char *parts1,*parts2;
	parts1=(char *)calloc(start+1,sizeof(char));
	parts2=(char *)calloc(len-start+1,sizeof(char));
	parts1[start+1]=0;parts2[len-start+1]=0;
	int i,o;
	for(i=0;i<start;i++)
		parts1[i]=line[i];
	o=i;
	for(i=0;i<len-start;i++){
		parts2[i]=line[o];
		o++;
	}
	if(pattern == 2){
		strcat(parts2,parts1);
		strcpy(finish,parts2);
	}
	if(pattern == 3 || pattern == 4){
		stack(parts1,start);
		if(pattern == 3){
			strcat(parts1,parts2);
			strcpy(finish,parts1);
		}
		else{
			strcat(parts2,parts1);
			strcpy(finish,parts2);
		}
	}
	if(pattern == 5 || pattern == 6){
		stack(parts2,len-start);
		if(pattern == 5){
			strcat(parts1,parts2);
			strcpy(finish,parts1);
		}
		else{
			strcat(parts2,parts1);
			strcpy(finish,parts2);
		}
	}
	if(pattern == 7 || pattern == 8){
		stack(parts1,start);
		stack(parts2,len-start);
		if(pattern == 7){
			strcat(parts1,parts2);
			strcpy(finish,parts1);
		}
		else{
			strcat(parts2,parts1);
			strcpy(finish,parts2);
		}
	}
}
int main(void){
	int n;
	scanf("%d",&n);
	while(n){
	char line[73]={0};char finish[73]={0};char memo[1000][73]={0};
	int len,i,o,p=1,sum=1,sign=0,t;
	scanf("%s",line);
	strcpy(memo[0],line);
	len=strlen(line);
	for(i=1;i<=len-1;i++){
		for(o=2;o<=8;o++){
			assemble(line,finish,o,i,len);
			sign=0;
			for(t=0;t<=p;t++){
				if(strcmp(finish,memo[t]) ==0){
					sign=1;
					break;
				}
			}
			if(sign == 0){
				p++;
				strcpy(memo[p],finish);
				sum++;
			}
		}
	}
	printf("%d\n",sum);
	n--;
	}
	return 0;
}