/**
 *    author:  orzvanh14
 *    created: 23.12.2022 10:08:02
 *    too lazy to update time
**/
// i wants to take ioi
//binhtinhtutinkhongcaycunhungmotkhikhongcontutinnualatuyetvong
#include <bits/stdc++.h>

using namespace std;

#define int long long
#define nn "\n"
#define pi pair<int, int>
#define fi first
#define se second
#define lb lower_bound
#define ub upper_bound
#define eb emplace_back
#define pb push_back
#define TASK " "

#define ms(a, x) memset(a, x, sizeof(a))
#define all(a) a.begin(), a.end()
#define All(a, n) a + 1, a + 1 + n

#define LOG 19


const int INF = 1e18;
const int mod = 1e9+7;
const int N = 1e6  + 5;
const int maxN = 1e5 + 5;
int MOD = 998244353;
int bit[200000];
struct node{
	int kc, u, hk;
	bool operator<(const node& other) const {
        return kc > other.kc; 
    }
};
struct edge{
	int u, v, w, id;
	friend bool operator < ( edge a, edge b){
		return a.w > b.w;
	}
};
string s;
int a[N];
void nhap(){
    cin >> s;
    
}
void solve(){
    for(int i = 1; i < s.size(); i++){
        int j = a[i - 1];
        while(j > 0 && s[i] != s[j]){
            j = a[j - 1];
        }
        if(s[i] == s[j]){
            j++;
        }
        a[i] = j;
    }
    int sz = s.size() - a[s.size() - 1];
    int k = 1;
    string t = s;
    if(s.size() % sz == 0){
        k = s.size() / sz;
        t = s.substr(0, sz);
    }

    cout << k << t << nn;
}
signed main() {
	// freopen("piggyback.in", "r", stdin);
	// freopen("piggyback.out", "w", stdout);
	ios_base::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
    nhap();
    solve();
	return 0;

}
